1

就是这样:我正在通过这个刷新一个名为 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,然后填充方法并填充自动字段,但填充方法不会引发任何错误,所以是空的......或错误丢失......知道我是如何可以访问这些错误吗?通过在我的动作课中设置 dem 全局?actionerrors 出现在 index.jsp 中,但我想在每次加载时刷新该页面以从数据库中选择值...我可以将操作错误的值从一个 jsp 页面带到另一个页面吗?

4

1 回答 1

1

完成:我从没想过会那么容易.. 不需要传输. 但是如果它不刷新并且只包含标签,<s:actionerror/>您可以使用它来传输整个页面。就像当您使用链接来调用您的操作时一样,在这种情况下不会刷新其操作方式。但在我的情况下,我想要刷新,就这样吧:<jsp:include page='index.jsp'><s:actionerror/><a>

就在你输入返回错误之前;在您的执行方法中复制您的填充方法的内容。如

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

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

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

现在刷新funda工作带您注册表格..如果验证失败,请立即提交相同的页面将被调用并填充字段:D和操作错误......

于 2012-05-07T05:12:03.773 回答