2014-10-30 102 views
1

什麼是可能的方式轉換下面的struts 1代碼遷移到struts 2.我知道s:select標籤,但如何整合c:foreach jstl在那?Dropdown struts 2

<html:select property="acti" onchange="setActi(form);" style="width:45px"> 
    <html:option value=""><s:text name="form.date" /></html:option> 
    <c:forEach items="${v}" var="var"> 
     <c:if test="${not (var eq form.acti)}"> 
      <option value="<c:out value="${var}"/>"><c:out value="${var}"/></option> 
     </c:if> 
     <c:if test="${var eq form.acti}"> 
      <option selected value="<c:out value="${form.jacti}"/>"><c:out value="${form.acti}"/></option> 
     </c:if> 
    </c:forEach> 
</html:select> 

回答

0

您應該刪除Struts1標籤,這就夠了。 Struts2可以使用JSTL,所以你可以減少你的遷移時間。

<select name="activite" value="<c:out value='${form.activite}'/>" onchange="setActivite(form);" style="width:45px"> 
    <option value=""><s:text name="form.date.jour" /></option> 
    <c:forEach items="${jour}" var="varJour"> 
     <c:if test="${not (varJour eq form.activite)}"> 
      <option value="<c:out value="${varJour}"/>"><c:out value="${varJour}"/></option> 
     </c:if> 
     <c:if test="${varJour eq form.activite}"> 
      <option selected value="<c:out value="${form.jactivite}"/>"><c:out value="${form.activite}"/></option> 
     </c:if> 
    </c:forEach> 
</select> 

請注意,該代碼應該用於遷移目的。如果你正在開發一個新的應用程序,你可以花更多的時間用struts標籤重新設計你的代碼(如果你真的需要它們的話)。

1

所有的代碼都可以用同樣的功能在被壓扁:

<s:select name = "activite" 
      list = "jour"  
    headerKey = "" 
    headerValue = "getText(form.date.jour)" 
     value = "form.activite" 
     onchange = "setActivite(form);" 
     cssStyle = "width:45px" 
/> 

所以你不需要在foreach可言。但是,如果你需要它,然後使用<s:iterator>(與JSTL的<c:forEach>的struts2等效標籤)。

我假設form.jactiviteform.activite的拼寫錯誤,如果不是你必須用OGNL調整它。順便說一句,你正在做一個簡單的,直接的業務,如餵養一個選擇框(相同的鍵和值,不同的鍵和值爲選定的對象,ecc ...)很奇怪的事情...