2012-10-03 18 views
1

我需要與局部變量vTopPosition改變風格元素「頂」值文本框。 下面是不工作的代碼。Struts2的 - 需要改變的<風格元素的值:使用動態局部變量

<%! int vTopPosition = 255; %> 

<s:iterator var="characteristicValues" value="MaterialDTO.characteristicValue"> 

    <s:textfield id="attribute" name="abc" value="%{characteristicValues}" type="text" cssClass="input" readonly="true" 
style="position: absolute; width: 200px; left: 227px; top: <%=vTopPosition>px; z-index: 31" /> 

    <% vTopPosition=vTopPosition+25;%> 
</s:iterator> 

請提出我需要做出什麼變化才能使頂部元素動態化。

回答

0

不知道這是做的最好的方式,但你可以嘗試:

<s:set var="vTopPosition" value="%{255}"/> 
<s:iterator var="characteristicValues" value="MaterialDTO.characteristicValue"> 
    <s:textfield id="attribute" name="abc" value="%{characteristicValues}" type="text" cssClass="input" readonly="true" style="position: absolute; width: 200px; left: 227px; top: %{#vTopPosition}px; z-index: 31" /> 
    <s:set var="vTopPosition" value="%{#vTopPosition+25}"/> 
</s:iterator> 
+0

嗨你的代碼似乎沒有工作...代碼**%{#vTopPosition} PX **旁邊**頂部**將其作爲字符串文字,而它應該已經轉換了表達式。請建議我應該怎樣做才能使其工作。 –

+0

@MithilShukla奇怪。我做了一個快速測試,它適用於我,儘管我仍然不確定這是否是最好的方式。我只是把你的代碼修改了一下。我正在使用struts2-core v.2.3.4.1。嘗試將'%{#vTopPosition} px'更改爲'%{vTopPosition} px'? – nmc

+0

感謝您的建議。 –

1

您可以在動作類中定義的屬性vTopPosition使其動態。

在set name屬性中被棄用use var來代替。

<s:set var="styleString" value="'position: absolute; width: 200px; left: 227px; top:' + vTopPosition + 'px; z-index: 31'"/> 

然後在文本字段:

<s:textfield id="attribute" name="abc" value="%{characteristicValues}" type="text" cssClass="input" readonly="true" 
style="%{styleString}" /> 
+0

現在它將'vTopPosition'設置爲'vTopPosition'的值......這似乎是不必要的。 –

+0

編輯答案可能不僅僅是要求...但這應該工作(未經測試)。 – Quaternion