这里有: 我通过这个
刷新了一个名为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页面带到另一个页面吗?
答案 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和操作错误...