关于struts2 的一个问题
小弟在看马老师的视频,但是有个例子跟他的视频里面显示的结果不一样,想请教下大家。
我显示出来的结果是:
User Add Error!
[Debug]
而马老师的视屏中显示的结果是
User Add Error!
name is error
[Debug]
name is error
我上课的时候问了下老师,他让我将对应的jsp文件中的<s:fielderror fieldName="name" />改为<s:fielderror fieldName="a" />虽然结果是出来了,但是我很是不能理解,如果真的是这样操作,当我下次在网页name中输入的不是a,而是不name不是要改为b么,如果有一万个选择,那我的写多少在后面啊,请大家给我说说。这个应该距地怎么改,还有jps中<s:property value="errors.name[0]"/>这句的效果也没有显示出来。
我的struts.xml的配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.i18n.encoding" value="GBK" />
<package name="default" namespace="/user" extends="struts-default">
<action name="user" class = "defaultaction.UserAction" >
<result >
/user_add_success.jsp
</result>
<result name="error">
/user_add_error.jsp
</result>
</action>
</package>
</struts>
对应的java文件:
package defaultaction;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String add() throws Exception {
if(name == null || !name.equals("action")){
this.add
FieldError(name, "name is error");
return ERROR;
}
return SUCCESS;
}
}
对应的显示在网页上面的jsp文件:
<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Insert title here</title>
</head>
<body>
User Add Error!
<s:fielderror fieldName="name" />
<br />
<s:property value="errors.name[0]"/>
<s:debug></s:debug>
</body>
</html>
------解决方案--------------------这个问题仁兄你发了两个帖了,去JAVA WEB 版块发吧。这是JAVA SE版块。
------解决方案--------------------LS+1 连发两贴
------解决方案--------------------
void addFieldError(String fieldName, String errorMessage)
Add an error message for a given field.
this.addFieldError(name, "name is error");
this.addFieldError("name", "name is error");
楼主可明白了呢?第一个是用name的值作为属性名,你error.name,如果你name的值不等于name,当然是找不到的。
所以这里你应该用的是字符串"name"表示,错误的属性名称。