2016-12-04 10 views
-1

Так у меня есть этот код: JSP (Первая вещь, где пользователь получает показано значения)Получение значений из Struts Checkbox, что итерированными

<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> 

затем после нажатия на кнопку, вы попадаете сюда через распорки:

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

затем Действие:

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

, а затем 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; 

} 

Затем результаты, если он говорит УСПЕХ:

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

       </tr> 
      </s:iterator> 

Я не знаю, как получить значения из флажков, которые проверяются (я назвал их проверки) и их fieldValue является то, что я хочу, чтобы положить в массив, выводимый на другой.

ответ

0

Сначала вам нужно создать свойство класса действия с именем checked, которое соответствует значению в поле names:checkbox.

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

s: checkbox значения должны быть представлены с помощью s:form или любым другим способом, что передача данных формы с запросом.

В стеке по умолчанию включен перехватчик checkbox, который принимает отмеченные и непроверенные значения. Если вы хотите только отмеченные значения, то вы должны использовать html. Если вы используете атрибут fieldValue, то вы должны использовать value="true" иначе checkbox перехватчик не принимает проверено значение и значение поля не будут преобразованы в свойство действия. (Для непроверенных значений это может быть value="false").

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

Так как вы только нужно, чтобы получить значение, в нескольких значениях выше решения имеет одно имя параметра. Это может быть проще, чем сложное имя для привязки к индексированному свойству действия. Последнее используется в случае, если вам необходимо привязать это свойство в двух направлениях. Вы можете увидеть пример Get value from checkbox inside iterator, in struts2.

Если вам нужно глубже понять, как работает перехватчик, вы можете прочитать ответ this.

+0

Вы должны принять ответ. –