alexhometown 2014-04-09 14:22 采纳率: 0%
浏览 2112

从页面表单提交数据时,为啥没有经过类型转换类?求解

在进行类型转换测试时发现,在从页面提交参数到后台时,并没有进过我配置的类型转换器,但在将后台类中的属性输出到页面上时,经过了类型转换器。
有没有哪位骚年能指出错在哪里?

struts.xml的配置内容
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">


   <action name="LoginAction" class="com.st.action.LoginAction">
       <result name="success">/result.jsp</result>
   </action>


接受页面传过来的参数的是Customer类
public class Customer
{
private String username;
private String password;
private int age;
public String getUsername() {
System.out.println("从customer中取值username");
return username;
}
public void setUsername(String username) {
System.out.println("往customer中赋值username");
this.username = username;
}
public String getPassword() {
System.out.println("从customer中取值password");
return password;
}
public void setPassword(String password) {
System.out.println("往customer中赋值password");
this.password = password;
}
public int getAge() {
System.out.println("从customer中取值age");
return age;
}
public void setAge(int age) {
System.out.println("往customer中赋值age");
this.age = age;
}

}

Action类中存放的是Customer类型的属性
public class LoginAction extends ActionSupport
{
private Customer ct;

public Customer getCt()
{
System.out.println("从Action中取值");
return ct;
}

public void setCt(Customer ct)
{
System.out.println("给Action中的属性赋值");
this.ct = ct;
}

@Override
public String execute()
{
System.out.println("execute is invoked");
return SUCCESS;
}

@Override
public void validate() {
System.out.println("validate is invoked");
}

}

下方是我的类型转换器的代码

public class CustomerConverter extends DefaultTypeConverter
{
@Override
public Object convertValue(Map context, Object value, Class toType)
{
System.out.println(toType.getName());
if(Customer.class==toType)
{
System.out.println("外转内");
String[] str = (String[])value;
String username = str[0];
String password = str[1];
int age = Integer.parseInt(str[2]);
Customer ct = new Customer();
ct.setUsername(username);
ct.setPassword(password);
ct.setAge(age);
return ct;
}
else if(String.class==toType)
{

System.out.println(toType.getName());
System.out.println("内转外");
Customer ct1 = (Customer)value;
String username = ct1.getUsername();
String password = ct1.getPassword();
String age = String.valueOf(ct1.getAge());
String info = "username is "+username+" password is "+password+" age is "+age;
return info;

}
return null;
}
}

properties文件也有配置就放在action的包中

ct=com.st.converter.CustomerConverter

提交表单后,页面输出ognl.NoConversionPossible

  • 写回答

1条回答

  • alexhometown 2014-04-13 06:28
    关注

    此问题已解决,是由于jsp页面中input标签里的name属性值写错造成的。name的属性值要和action中的属性变量名要一样。

    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题