我有一个使用嵌套标记的传统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不是一种选择。
谢谢!
答案 0 :(得分:1)
Struts 1(据我所知)不允许你这样做:
<nested:select disabled="<c:out value='${requestScope.disableSelectBox}' />" />
由于无法在其任何属性声明中处理JSP标记,请检查nested:select disabled
属性所需需要什么。
但是Struts确实支持EL和JSP Scriplets(所以你的同事是正确的)。 JSP Scriptlet将“呈现”<%=request.getAttribute("disableSelectBox"); %>
的值并将其分配给<nested:select disabled="<%=request.getAttribute("disableSelectBox"); %>" />
所以(如果我假设值返回true或false,
<nested:select disabled="${requestScope.disableSelectBox}" />
和
<nested:select disabled="<%=request.getAttribute("disableSelectBox"); %>" />
将呈现为(如果结果返回true)
<nested:select disabled="true" />
在将其发送到Struts以呈现嵌套标记之前(抱歉使用“render”一词,如果需要,可以使用translate)。