如何将<s:actionerror>的值从一个jsp页面传递到另一个页面?</s:actionerror>

时间:2012-05-06 20:17:59

标签: jsp struts2 struts struts-validation struts-html

这里有: 我通过这个

刷新了一个名为index.jsp的页面
<head>
        <meta http-equiv="Refresh" CONTENT="0;URL=populatefields.action">

</head>

它正在呼唤我的行动。这是我的struts.xml中的映射

 <struts>

        <package name="com.action" extends="struts-default">
            <action name="*fields" method="{1}" class="com.action.RegisterAction">
    <result name="populate">/register.jsp</result>
    <result name="fields">/success.jsp</result>
<result name="error">/index.jsp</result>
    </action>

我在这里做的是加载index.jsp,我用这个url 'populatefields.action'刷新了它。这将调用我的操作类和populate方法(通配符方法调用).Populate方法从数据库中选择条目并将它们分配给表单字段属性,returns "populate";将控制权转移到register.jsp并填充一些值已经。[即根据当前用户动态填写表格的一部分]

如果有一些验证检查,请在register.jsp上 if(getUssername.equals("")) {this.addActionerror("Empty field -Uname-"); return error;}

问题是返回“错误”控件转到index.jsp然后填充方法和自动字段得到填充但populate方法不会抛出任何错误因此是空的...或错误丢失... 知道我怎么能访问这些错误?通过在我的动作类中设置dem global? actionerrors出现在index.jsp中,但是我想要刷新那个页面,它加载时从数据库中选择值...我可以将动作错误的值从一个jsp页面带到另一个页面吗?

1 个答案:

答案 0 :(得分:1)

完成:我从未想过会那么容易..不需要传输<s:actionerror/>的值。但是如果它不刷新并且仅包含{<jsp:include page='index.jsp'>,则可以使用<s:actionerror/>转移整个页面{1}}标记。就像当你使用<a>链接来调用你的动作时,不是在这种情况下刷新它的行动方式..但在我的情况下,我想要刷新,所以它是:

在您键入return错误之前;在execute方法中复制populate方法的内容。如

execute{
if(validation fails){populate method content(leave the return statement); 
  return error;
 }
else
return success;
}

在struts.xml中更改此&lt; result name="error">/register.jsp</result>而不是<result name="error">/index.jsp</result>

也无需在index.jsp中编写<s:actionerror>,因为您现在将其重定向到register.jsp,所以只需将其写入register.jsp ...

现在刷新基础工作,带你注册表单.. 如果验证失败,请尝试立即提交同一页面将调用填充字段:D和操作错误...