从 struts-1 迁移到 struts-2(<bean:write>, request.getAttribute("attr1"),session.getAttribute("attr2"))

Migrating from struts-1 to struts-2(<bean:write>, request.getAttribute("attr1"),session.getAttribute("attr2"))

假设用户对象存在于任一范围(PageContext、请求、会话、应用程序)

所以要在 jsp 中获取用户对象(来自任何一个范围),下面的代码在 struts1.X

中工作得非常好
**<bean:write name="user" property="someProperty"/>**

所以在struts-2中我该如何实现,请提供任何建议

除了上面那个,有没有办法在struts-2中实现下面的代码JSP

    <%
    User user = (User)session.getAttribute("user");
    if(null != user){%>
    // some html code
    <%}%> 

    <%
    if(null != user.getSomeProperty() && "".equals(user.getSomeProperty())){%>
    //some html code
    <%}%>

<%
    if(null != user.getSomeProperty() && "prop1".equals(user.getSomeProperty())){%>
    //some html code
    <%}%>

我相信通过使用 struts-2 标签,我可以使代码更简单、更清晰,而不是使用上面的脚本。

所以 struts-2 中最好的东西是什么,请帮帮我

<bean:write name="user" property="someProperty" /> 等价于:

${user.someProperty}

如果 JSP EL 不适合你:

<s:property value="user.someProperty" />

或者更明确的 OGNL:

<s:property value="%{user.someProperty}" />

所有这些都包含在 S2 文档中;我强烈建议您花一些时间通读文档和教程,因为这是 Struts 2 101. 基本内容。

至于你的第二个完全不相关的问题,这应该通过小脚本来处理。 Scriptlet 是一种代码味道。不要那样做。

您需要使用 <s:if > 标签,它在文档中

如果你退后一步,只学习你正在尝试使用的框架,你会发现事情进展得更有效率。