struts2类型转换

啊啊三这几天的时间都在看书,看英语,做自己的wordpress的网站搭建,Domain买好了,但是找免费的空间真的很难找,而且适合自己的太难找了。外国的免费空间真的不少,但是国内的访问速度真是不敢恭维呀,但是如果是买国内的付费空间也不是嫌贵,就是自己觉得,自己还是等等国外的空间域名绑定成功再看看吧,真的很不爽,时间用了这么长时间了,还是没有绑定好,心里没底啊!

       英语六级考完了,怎么说呢,我感觉还是没戏,不过这次应该是我大学里面的最后一次六级了吧,我不能老是放不下,我现在是对看英语一点试题,做英语试题是一点兴趣都没有,但是我喜欢看自己不认识的单词,喜欢看英语的API,喜欢翻译,但是为了做题,拿分而学英语不知道是不是一种悲哀。

       操作系统也还得看呀,我还有很多的任务没有完成呀,自己也还有很多喜欢的事情很想做,但是又有很多自己不得不去做的事情,所以我的生活没有别人过得那么潇洒哇!不过,没关系,没关系,珍惜时间就好,就好!

       关于struts2的类型转换我早在一星期前就看了吧,由于很多的事情自己没有实现,一直拖着,昨天又熬了个晚饭的时间还是没有解决,今天总算解决掉了。我以前就说过,web的不好操作型,因为有很多的配置文件,你稍微不留神就很容易出错,而出错了之后要想改正,又非常麻烦,因为你不知道,怎么样进一步的排出错误,不过现在自己慢慢的慢慢的找到了线索,和c++和java一样的,就是打印!靠着打印来找出错的行径。

       还是说说struts2的类型转换吧,struts2的类型转换解决的问题是,一些复杂的数据结构向对象的转换,因为转换成对象,对于Action的处理就方便多了。而且是网页的所有数据都是OGNL默认帮着处理的。而如果是复杂的数据的话,当然默认处理是处理不了的,所以就得你自己处理的。方法就是,先写好,Typeconvertor类,其中Typeconvertor还是继承DefaultTypeConverter比较好,里面的默认继承方法,你可以用alt + shift + S调出参数是三个的那个convertValue,三个参数分别为context(环境具体的你运行我的程序看控制台的输出),Object value,就是你传过来的参数,然后toType就是你想转换成的类型。这些弄好之后你就编写你的算法就行了,然后就是关于配置文件的说明了,参数的说明是这样的,在action的文件内加以个,Actionname-conversion.properties的文件,里面是一对key-class,key对应的是你的jsp传过来的属性名,也是你Action内接受的属性名,当然这是局部设置,如果你要全局设置的话,那么你的properties的文件就要放在WEB-INF/classes里面,文件名xwork-conversion.properties。关于全局的我不介绍了,这里只介绍局部的:

发出Action的JSP:

	<div>
  		<s:form action="queryproduct">
  			<s:textfield label="product1" name="product1"></s:textfield>
  			<!-- 这里用label比较好,还自动给你加上“:” -->
  			<s:textfield label="product2" name="product2"></s:textfield>
  			<s:submit name="show" value="showdata"> </s:submit>
  		</s:form>
  	</div>

convertor类:


package chapter8.converter;

import java.util.Map;
import java.util.Map.Entry;

import chapter8.bean.Product;

import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;

public class ProductConverter extends DefaultTypeConverter {

	@Override
	public Object convertValue(Map<String, Object> context, Object value,
			Class toType) {
		// TODO Auto-generated method stub
		for (Entry<String,Object> entry: context.entrySet()) {
			System.out.println("key________" + entry.getKey() + "++++++" + "class___" + entry.getValue());
		}
		System.out.println("asd");
		if (toType == Product.class) {
			System.out.println("What is the matter!?");
			String[] params = (String[])value;
			Product product = new Product();
			String[] productValues = params[0].split(",");
			product.setName(productValues[0].trim());
			product.setPrice(Integer.parseInt(productValues[1].trim()));
			System.out.println(product.getName());
			System.out.println(product.getPrice());
			return product;
		} else if (toType == String.class) {
			System.out.println("String????");
			Product product = (Product)value;
			String param = product.getName() + "," + product.getPrice();
			return param;
		}
		return null;
	}

	
}

convertor安装文件,也就是properties文件:

product1 =chapter8.converter.ProductConverter
product2=chapter8.converter.ProductConverter

然后就是处理Action的class:

package chapter8.action;

import chapter8.bean.Product;

import com.opensymphony.xwork2.Action;

public class QueryProduct implements Action{
	private Product product1;
	private Product product2;
	
	public Product getProduct1() {
		System.out.println("getproduct1");
		return product1;
	}

	public void setProduct1(Product product1) {
		System.out.println("setproduct1");
		this.product1 = product1;
	}

	public Product getProduct2() {
		System.out.println("getproduct2");
		return product2;
	}

	public void setProduct2(Product product2) {
		System.out.println("setproduct2");
		this.product2 = product2;
	}

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return SUCCESS;
	}
	
}

还有就是struts.xml配置的action:

<action name="queryproduct" class="chapter8.action.QueryProduct">
			<result name="success">
				/chapter8/showproduct.jsp
			</result>
		</action>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值