【问题标题】:Struts Nested Tag with Dynamic Parameters带有动态参数的 Struts 嵌套标签
【发布时间】:2011-04-19 00:55:24
【问题描述】:

我有一个使用嵌套标记的旧版 Struts 1 应用程序。我可以在嵌套标签中注入动态参数吗?例如,

<nested:select disabled="<c:out value='${requestScope.disableSelectBox}' />" />

我也试过这样做:

<nested:select disabled="${requestScope.disableSelectBox}" />

在上面的两个例子中,disabled 属性都没有被正确设置并且被忽略了。如果我用 c:out 打印出该值,则会显示正确的 disableSelectBox 值:

<c:out value="${requestScope.disableSelectBox}" />

一位同事建议我应该使用:

<nested:select disabled="<%=request.getAttribute("disableSelectBox"); %>" />

问题在于,在 JSP 页面中使用 java scriplets 被认为是不好的做法。有没有办法将动态变量嵌入到 Struts 1 嵌套标签中?切换到 Struts 2 不是一种选择。

谢谢!

【问题讨论】:

  • 我不使用 Struts,所以我可能错了,但如果该 scriptlet 解决方案有效,那么如果您至少使用 JSP 2.0(即web.xml 声明至少符合 Servlet 2.4 版,并且您在 Servlet 2.4 兼容的服务器上运行 webapp。

标签: java jsp struts struts-1


【解决方案1】:

Struts 1(据我所知)不允许您这样做:

<nested:select disabled="<c:out value='${requestScope.disableSelectBox}' />" />

由于它无法处理其任何属性声明中的 JSP 标记,请检查 nested:select disabled 属性 必需 需要什么。

但是 Struts 确实支持 EL 和 JSP Scriplets(所以你的同事是对的)。 JSP Scriptlet 将“渲染”&lt;%=request.getAttribute("disableSelectBox"); %&gt; 的值并将其分配给&lt;nested:select disabled="&lt;%=request.getAttribute("disableSelectBox"); %&gt;" /&gt;

所以(如果我假设这些值返回真或假,

<nested:select disabled="${requestScope.disableSelectBox}" />

<nested:select disabled="<%=request.getAttribute("disableSelectBox"); %>" />

将呈现为(如果结果返回 true)

<nested:select disabled="true" />

在发送到 Struts 渲染嵌套标签之前(抱歉使用了“render”这个词,如果需要,可以使用 translate)。

【讨论】:

    猜你喜欢
    • 2019-08-28
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    相关资源
    最近更新 更多