2010-09-29 30 views
0

我有一個使用嵌套標籤的傳統Struts 1應用程序。我可以在嵌套標籤中注入動態參數嗎?例如,帶動態參數的Struts嵌套標籤

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

我也試着這樣做:

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

在上面的兩個例子,殘疾人屬性未正確設置,它被忽略了。如果我打印輸出AC值:出,則顯示disableSelectBox的正確值:

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

一位同事建議我應該使用:

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

麻煩的是,它被認爲是不好的做法,在JSP頁面中使用java腳本。有沒有辦法將動態變量嵌入到Struts 1嵌套標籤中?切換到Struts 2不是一種選擇。

謝謝!

+0

我不做Struts,所以我可能是錯的,但如果這個scriptlet解決方案工作,那麼理論上選項2應該也起作用,如果你至少使用了JSP 2.0(即web.xml被聲明至少符合Servlet版本2.4,並且您正在Servlet 2.4兼容服務器上運行Web應用程序)。 – BalusC 2010-09-29 20:22:35

回答

1

的Struts 1(據我記得)不能讓你做:

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

,因爲它無法處理內部的任何他們的屬性聲明的JSP標籤,檢查什麼nested:select disabled屬性需要需求。

但Struts確實支持EL和JSP腳本(所以你的同事是正確的)。 JSP腳本將 「渲染」 的<%=request.getAttribute("disableSelectBox"); %>的值,並將其分配給<nested:select disabled="<%=request.getAttribute("disableSelectBox"); %>" />

所以(如果我假設值返回一個true或false,

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

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

將呈現爲(如果結果爲真)

<nested:select disabled="true" /> 

在它被髮送到Struts來渲染嵌套標籤之前(對於使用「render」這個單詞感到抱歉,如果你願意,可以使用translate)。