转换器代码:public class LoginActionConverter extends DefaultTypeConverter { public Object convertValue(Map context, Object value, Class toType) { if (User.class.equals(toType)) {
String param[] = (String[]) value;
User user = new User();
user.setName(param[0]);
user.setName(param[1]); return user;
}
else if (String.class.equals(toType)) {
User user = (User) value;
String result = "user name is " + user.getName() + " and password is " + user.getPassword(); return result;
}
else {
return null;
}
}}
LoginAction 代码:public class LoginAction extends ActionSupport { private static final long serialVersionUID = -5082073797287003440L;
private User user;
public String execute() throws Exception {
System.out.println(user.getName());
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}}
LoginAction-conversion.properties
user=com.demo.converter.LoginActionConverter
似乎这个类型转换没有生效,运行时在action中抛出了空指针异常,LoginAction中的user对象没有将页面表单输入的值填充。不知道是哪里的设置不正确,请大家指教,谢谢环境: struts2 2.0.14 tomcat6.0.16 jdk1.6
String param[] = (String[]) value;
User user = new User();
user.setName(param[0]);
user.setName(param[1]); return user;
}
else if (String.class.equals(toType)) {
User user = (User) value;
String result = "user name is " + user.getName() + " and password is " + user.getPassword(); return result;
}
else {
return null;
}
}}
LoginAction 代码:public class LoginAction extends ActionSupport { private static final long serialVersionUID = -5082073797287003440L;
private User user;
public String execute() throws Exception {
System.out.println(user.getName());
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}}
LoginAction-conversion.properties
user=com.demo.converter.LoginActionConverter
似乎这个类型转换没有生效,运行时在action中抛出了空指针异常,LoginAction中的user对象没有将页面表单输入的值填充。不知道是哪里的设置不正确,请大家指教,谢谢环境: struts2 2.0.14 tomcat6.0.16 jdk1.6
解决方案 »
- 关于查询的效率问题
- SSH架构业务逻辑代码写到那一层比较好?
- 有关hibernate的update 无主键关联表的问题
- hibernate 怎么操作Oracle中2个数据库的有联系的表?
- url_rewrite后,用jk_mod集成的apache与tomcat怎么配合?
- (搜索引擎的模糊匹配)lucene适合海量数据的模糊匹配吗?寻求“类百家姓”在lucene的实现方法?
- axis问题,编译成功,在JBuilder里面也可以运行,但是export出来.exe,单独运行时候会有以下异常
- 请教一下 上下文中的PROVIDER_URL怎么设置?
- 安裝sql2000 driver for jdbc后還要怎樣配置才行﹖
- 在用户登陆后,怎样在接下来的jsp中检验到用户是否已经登录?不用javaBean能实现吗?
- java中读取有规则的txt文件(在xml中定制下规则)
- attributeRemoved没有被触发
if (User.class.equals(toType)) {
String param[] = (String[]) value;
User user = new User();
user.setName(param[0]);
user.setName(param[1]); return user;
}
else if (String.class.equals(toType)) {
User user = (User) value;
String result = "user name is " + user.getName() + " and password is " + user.getPassword(); return result;
}
}catch(Exception e){
return null;
}这样看看
我试了下没有用 问题好像是这个conversion根本没有被调用,这个转换器应该是到达action之前就会被调用的,将转换好的user对象注入到action中 ,可是我设置了断点 没有进来。
有断点也是不会停的。
另外你的properties文件跟action放在一个包下吧??
我也尝试了下全局的类型转换 也是没有被回调
我的确是debug下的调试断点的 直接进入action了 没有进入类型转换器。。
String[] param = (String[]) value;
User user = new User();
String[] userValues=param[0].split(",");
user.setName(userValues[0]);
user.setPass(userValues[1]); return user;
}
<form action="login.action" method="post">
<div align="center">
<table width="">
<tr>
<td align="center" >请输入用户名和口令</td>
</tr>
<tr>
<td valign="top"><br></td><td>用户名</td> <td valign="top"><br></td><td>
<input type="text" name ="name"></td>
</tr>
<tr>
<td valign="top"><br></td><td>口 令</td><td valign="top"><br></td><td>
<input type="password" name = "password"></td>
</tr>
<tr>
<td valign="top"><br></td><td align="right"><input type="submit" value="提交"></td>
<td valign="top"><br></td><td><input type="reset" value="取消"></td>
</tr>
</table>
</div>
</form>
struts.xml
<struts> <package name="default" extends="struts-default">
<action name="login" class="com.john.web.action.LoginAction">
<result name="input">/login.jsp</result>
<result name="success">/result.jsp</result>
<result name="error">/error.jsp </result>
</action>
</package></struts>
我参看官方网站的doc说 只要在classpath下找到了转换器的*-conversion.properties 文件 就会自动的调用
可是这里没有调用,百思不得其解!~