小弟在看马老师的视频,但是有个例子跟他的视频里面显示的结果不一样,想请教下大家。
我显示出来的结果是:
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.addFieldError(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>

解决方案 »

  1.   

    这个问题仁兄你发了两个帖了,去JAVA WEB 版块发吧。这是JAVA SE版块。
      

  2.   

    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"表示,错误的属性名称。