gpt4 book ai didi

java - Struts 如何使用对象预填充编辑表单

转载 作者:行者123 更新时间:2023-12-01 11:28:00 28 4
gpt4 key购买 nike

我有一个名为 Brand 的简单实体:

public class Brand{
private long id;
private String name;
//getters and setters
}

我有一个显示此数据的jsp:

        <p>
<label for="id"><s:text name="brand.view.id" /></label>
<c:out value="${requestScope.brand.id}"></c:out>
</p>
<p>
<label for="name"><s:text name="brand.view.name" /></label>
<c:out value="${requestScope.brand.name}"></c:out>
</p>
<p>
<s:a action="edit_display" namespace="/brand"><s:text name="brand.view.button.edit" />
</s:a>
</p>

在此 jsp 页面中,您会看到有一个“编辑”按钮,可以让用户进入编辑表单。我希望此表单中填充品牌数据。

现在在 struts.xml 中我有下一个映射:

<package name="brand" namespace="/brand" extends="struts-default">
<action name="*_display">
<result name="success" type="dispatcher">/WEB-INF/view/brand/{1}.jsp
</result>
</action>
<action name="view" class="com.example.action.brand.ViewBrandAction">
<result name="success">/WEB-INF/view/brand/view.jsp</result>
</action>
<action name="edit" class="com.example.action.brand.EditBrandAction">
<result name="success">/WEB-INF/view/brand/edit.jsp</result>
</action>
</package>

所以现在的逻辑是:当用户单击 /brand/edit_display 链接时,不会调用任何操作,因此将显示空表单。

如果我想在 jsp 之间传递对象,我有什么选择?操作链接、编辑页面上的 ajax、另一个操作 PopulateEditBrandAction、构建查询参数字符串或者也许有更好的东西?

因为我知道用户想要编辑的对象 - 我可以简单地传递它吗?

最佳答案

对 edit_display 的调用会创建一个带有新操作上下文的新请求。如果希望不同的请求共享相同的数据,就必须使用session。

Struts2 的方法是实现 org.apache.struts2.interceptor.SessionAware在你的行动中。

将对象保存在ViewBrandAction中:

userSession.put("some_namespace_brand", brand);

然后您可以使用以下方式访问 jsp 中的对象:

<s:property value="#session.some_namespace_brand.id" />

或者实现你所谓的PopulateEditBrandAction取回对象:

brand = (Brand) userSession.get("some_namespace_brand");

请务必阅读相关文档,因为它解决了通过请求参数访问 session 的安全风险。 https://struts.apache.org/docs/http-session.html

关于java - Struts 如何使用对象预填充编辑表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30651862/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com