Forms 在struts 2中重定向后填充字段

Forms 在struts 2中重定向后填充字段,forms,validation,redirect,parameters,struts2,Forms,Validation,Redirect,Parameters,Struts2,我试图了解在表单验证失败并重定向(按照所描述的模式)后,是否有一种最简单、最短的方法来填充表单的字段 我有一个从addPerson.action调用的表单,提交操作是savePerson.action。 如果验证失败,我将重定向并传递所有参数,这样重定向的页面将使用用户插入的数据填充字段,从而避免用户从头开始的麻烦。 此解决方案的问题是,我必须在struts.xml中列出表单的每个参数,如下例所示: <action name="savePerson" class="personAction

我试图了解在表单验证失败并重定向(按照所描述的模式)后,是否有一种最简单、最短的方法来填充表单的字段

我有一个从addPerson.action调用的表单,提交操作是savePerson.action。 如果验证失败,我将重定向并传递所有参数,这样重定向的页面将使用用户插入的数据填充字段,从而避免用户从头开始的麻烦。 此解决方案的问题是,我必须在struts.xml中列出表单的每个参数,如下例所示:

<action name="savePerson" class="personAction" method="savePerson">
        <interceptor-ref name="store">
            <param name="operationMode">STORE</param>
        </interceptor-ref>
        <interceptor-ref name="myStack" />
        <result name="success" type="redirectAction">
            <param name="actionName">listPeople</param>
        </result>
        <result name="input" type="redirectAction">
            <param name="actionName">addPerson</param>
            <param name="parse">true</param>
            <param name="person.name">${person.name}</param>
            <param name="person.surname">${person.surname}</param>
            <param name="person.gender">${person.gender}</param>
            <param name="person.email">${person.email}</param>
            <param name="person.mobile">${person.mobile}</param>
        </result>
    </action>
    <action name="addPerson" class="personAction" method="addPerson">
        <interceptor-ref name="store">
            <param name="operationMode">RETRIEVE</param>
        </interceptor-ref>
        <interceptor-ref name="myStack" />
        <result name="success">/person/add.jsp</result>
        <result name="input">/person/add.jsp</result>
    </action>

贮藏
列表人
addPerson
真的
${person.name}
${个人姓氏}
${person.gender}
${person.email}
${person.mobile}
检索
/person/add.jsp
/person/add.jsp
我必须使用MessageStoreInterceptor来保存和检索重定向中的验证错误消息

我已经在使用ajax验证,但我希望我的页面也能在非javascript模式下工作。使用上面的代码,一切都按预期工作,但看起来很奇怪,我必须在result标记中列出我的所有参数

有更好、更短的方法吗?
谢谢

重新开始重定向后,除了显式传入的参数外,您将抛出值堆栈。你可能想要的是一条链,它会把价值堆滚雪球

有关结果类型的列表,请参见此处,链接到链有一些示例:

然后,您可以只使用基本结果标记,可能不需要正文


见nmc的评论。这也是我所做的,这不是一个好主意,使用链或重定向行动。。。创建意大利面动作。

重新开始重定向后,除了显式传入的参数外,您将抛出值堆栈。你可能想要的是一条链,它会把价值堆滚雪球

有关结果类型的列表,请参见此处,链接到链有一些示例:

然后,您可以只使用基本结果标记,可能不需要正文


见nmc的评论。这也是我所做的,这不是一个好主意,使用链或重定向行动。。。创造意大利面动作。

只是好奇而已。。。当验证失败时,您需要在
addPerson
方法中重定向到它,您正在做什么?因为通常情况下,作为
savePerson
操作的结果,我会有
/person/add.jsp
,这就足够了。但是如果在验证失败后点击刷新,浏览器会询问您是否要重新提交表单,这是nmc描述的正确问题之一。验证失败后不要重定向。“发布后重定向”模式用于后续页面,而不是用于重新显示输入页面以更正验证错误。验证成功并处理表单后重定向。如果输入页面需要预填充数据,该怎么办?在这种情况下,我需要重定向到操作(填充数据)而不是jsp吗。。。当验证失败时,您需要在
addPerson
方法中重定向到它,您正在做什么?因为通常情况下,作为
savePerson
操作的结果,我会有
/person/add.jsp
,这就足够了。但是如果在验证失败后点击刷新,浏览器会询问您是否要重新提交表单,这是nmc描述的正确问题之一。验证失败后不要重定向。“发布后重定向”模式用于后续页面,而不是用于重新显示输入页面以更正验证错误。验证成功并处理表单后重定向。如果输入页面需要预填充数据,该怎么办?在这种情况下,我是否需要重定向到操作(填充数据)而不是jsp?