-1
rich : dataTable 안에 체크 박스 목록이 있습니다. 헤더 열의 단일 체크 박스로 모든 체크 박스를 한번에 확인하고 싶습니다. checkallbox 콩에서JSF-2 단일 체크 박스로 모든 체크 박스 선택/선택 해제
<rich:column id="includeInWHMapping" >
<f:facet name="header">
<h:selectBooleanCheckbox value="#{checkallbox.selectAll}">
<f:ajax actionListener="#{checkallbox.selectAllBox}" render="selectedForWHProcess" />
</h:selectBooleanCheckbox>
</f:facet>
<h:selectBooleanCheckbox id="selectedForWHProcess" value="#{checkallbox.checked[data]}">
<f:ajax actionListener="#{checkallbox.selectAllRows}"/>
</h:selectBooleanCheckbox></rich:column>
코드 :
private Map<StandardStructure, Boolean> checked = new HashMap<StandardStructure, Boolean>();
private boolean selectAll;
public boolean isSelectAll() {
return selectAll;
}
public void setSelectAll(boolean selectAll) {
this.selectAll = selectAll;
}
public Map<StandardStructure, Boolean> getChecked() {
return checked;
}
public void setChecked(Map<StandardStructure, Boolean> checked) {
this.checked = checked;
}
public void selectAllBox(ValueChangeEvent e){
boolean newSelectAll = (Boolean) e.getNewValue();
Iterator<StandardStructure> keys = checked.keySet().iterator();
while(keys.hasNext()){
StandardStructure ss = keys.next();
checked.put(ss, newSelectAll);
}
}
나는 시간을 확인할 때 : 헤더 열 아무것도 selectBooleanCheckBox 발생합니다. 내가 여기서 무엇을 놓치고 있니? "selectAll"속성에 대한 맵도 구현해야합니까?
감사합니다.
'selectAllBox'가 실행되고 전체 테이블을 렌더링하려 했습니까? –
@ EmilSierżęga 그래, 해고됐지만 체크 박스 목록에는 그런 변화가 없다. 나는 테이블 전체를 렌더링하지 않고 체크 박스 컬럼을 렌더링했다. 답장을 보내 주셔서 감사합니다! –
전체 테이블을 렌더링해야합니다. "열"을 렌더링 할 수는 없습니다. 렌더링 된 HTML에는 컬럼이 없으므로'tableId : _NUMBER_ : selectedForWHProcess'와 같은 ID를 가진 여러 개의 '
답변
우선.
f:ajax
에는actionListener
이없고listener
입니다. 문서 here을 읽으십시오. 두 번째로valueChangeListener
을h:selectBooleanCheckbox
에 사용할 수 있습니다. 셋째, 리스너 내부의 행 상자가 잘못되었습니다. 기본적으로 this topic을 읽어야합니다.지금, 여기에 동작하는 예제입니다 : 코드와
다른 가능한 문제 (당신은 단지 일부를 공유하기 때문에).
equals
방법이 좋은지 확인해야합니다. 95 %의 경우 기본값은 그렇지 않습니다. 특히@Entity
인 경우지도가 처음에 false로 채워져 있는지 확인해야합니다. 나는
@PostConstruct
를 사용출처
2016-08-30 09:14:56
감사합니다. Emil! 당신의 노력에 정말 감사드립니다. @PostConstruct를 사용하지 않았습니다. 하지만 이제는 효과가 있습니다. 지금있는 유일한 문제는 모든 체크 박스가 선택되지 않았지만 행이 선택되어있는 동안입니다. –
기꺼이 도와 드리겠습니다. 답변을 수락 된 것으로 표시 했으므로 문제가 해결 된 것처럼 보입니다 :-) –
사실 저는 답변을 수락했습니다! 나는 나의 것을 체크하는 것을 놓친다! : P 당신의 대답을 다시 받아 들였습니다! 감사! :) –
감사 에밀! 나는 그것을 해결했다.
출처
2016-08-30 09:58:01
이것은 귀하의 질문에 대한 답변이 아니지만 원하는대로 할 수 있습니다. –
관련 문제