2016-12-04 3 views
-1

So iteriert ich habe diesen Code: JSP (Das erste, was, wo Benutzer Werte gezeigt wird)Erste Werte von Struts Kästchen zum Ankreuzen, die

<s:iterator value="animes"> 
     <tr> 
      <td><s:checkbox name="checked" value="false" fieldValue="%{aniTitle}" 
         theme="simple" id=""/></td> 
      <td><s:property value="aniTitle"/></td> 
      <td><s:property value="aniStudio"/></td> 
      <td><s:property value="aniEpi"/></td> 
     </tr> 
     </s:iterator> 

dann nach Klicken auf eine Schaltfläche, dass Sie hier über Streben weitergeleitet:

<action name="aniDelHits2" class="AniAction" method="executeDelHits2"> 
     <result name="success" >deletechecked.jsp</result> 
     <result name="error" >error2.jsp</result> 
    </action> 

dann Aktion:

public String executeDelHits2(){ 
    titles = dao.deleteChecked(checked); 
    Iterator iterator = titles.iterator(); 
     if(iterator.hasNext()){  
      return SUCCESS;  
     }else{ 
      return ERROR; 
      }  
} 

und dann DAO:

public ArrayList<String> deleteChecked(String[] checked){ 
    //List<Anime> animes = new ArrayList<Anime>(); 
    ArrayList<String> anime2 = new ArrayList<String>(); 

    for(int i=0;i < checked.length;i++){ 
     anime2.add(checked[i]); 
    } 



    return anime2; 

} 

die Ergebnisse dann, wenn er sagt ERFOLG:

<s:iterator value="titles"> 
       <tr> 
        <td><s:property value="titles.checked"/></td> 

       </tr> 
      </s:iterator> 

Ich weiß nicht, wie die Werte von Kontrollkästchen erhalten, die überprüft werden (i nannte sie geprüft) und deren fieldvalue ist, was ich will in platzieren ein Array, das zu einem anderen ausgegeben wird.

Antwort

0

Zuerst müssen Sie eine Eigenschaft für die Aktionsklasse mit dem Namen checked erstellen, die dem Wert im Feld name der s:checkbox entspricht.

private String[] checked; 
//getter and setter provide 

s: checkbox Werte sollten über s:form oder sonstwie übermittelt werden, die Formulardaten mit Anforderung übertragen.

Der Standardstapel enthält den Interceptor checkbox, der geprüfte und ungeprüfte Werte akzeptiert. Wenn Sie nur überprüfte Werte möchten, sollten Sie das Kontrollkästchen html verwenden. Wenn Sie das Attribut fieldValue verwenden, sollten Sie value="true" verwenden, andernfalls checkbox Interceptor akzeptiert nicht überprüft Wert und Feldwert wird nicht in Aktion Eigenschaft umgewandelt werden. (Für ungeprüfte Werte könnte es value="false" sein).

<s:checkbox name="checked" value="true" 
      fieldValue="%{aniTitle}" theme="simple"/> 

Da Sie nur einen einzigen Parameter Namen benötigt, um die Werte zu erhalten, muss in den obigen Lösung mehr Werten. Es ist möglicherweise einfacher als ein komplexer Name, an die indizierte Eigenschaft der Aktion zu binden. Die letzte wird verwendet, falls Sie diese Eigenschaft bidirektional binden müssen. Sie können das Beispiel Get value from checkbox inside iterator, in struts2 sehen.

Wenn Sie tieferes Verständnis benötigen, wie Checkbox Interceptor funktioniert, können Sie this Antwort lesen.

+0

Sie sollten die Antwort akzeptieren. –

Verwandte Themen