Primefaces selectManyCheckbox 메뉴에서 값을 선택하고 나중에 데이터베이스에 쓰는 방법에 사용할 속성으로 선택한 값을 설정하려고합니다. 여기 는 컴퍼넌트 .xhtml 페이지의 코드이다Primefaces를 사용하여 값 설정 selectManyCheckbox에서 Java 속성이 작동하지 않음
<p:selectManyCheckbox id="chkbox1"
value="#{requestBean.filterTypeBean.selectedBooleanFilterTypes}"
layout="pageDirection" converter="filterTypeConverter">
<f:selectItems var="checkbox"
value="#{requestBean.filterTypeBean.listBooleanFilterTypes()}"
itemLabel="#{checkbox.filterTypeName}" itemValue="#{checkbox}" />
</p:selectManyCheckbox>
가
RequestBean 클래스 @ViewScoped되고, 그 안에 난 가지고
private FilterTypeBean filterTypeBean = new FilterTypeBean(); // Plus public get and set method for it
FilterType 클래스 @SessionScoped되고 그 안에 난 가지고
private List<TFilterType> selectedBooleanFilterTypes; //plus public get and set methods
public List<TFilterType> listBooleanFilterTypes() {
EntityManager em = HibernateUtil.getEntityManager();
Query q = em
.createQuery("select u from TFilterType u where u.filterType = 'B'");
List<TFilterType> resultList = q.getResultList();
return resultList;
}
내게는 모든게 괜찮은 것 같지만 selectManyCheckbo에서 일부 값을 선택해도 commandButton을 누르면 selectedBooleanFilterTypes 목록이 비어 있습니다. 엑스. 내가) (getSelectedBooleanFilterTypes를 사용하는 방법을 RequestBean 클래스의 값을 취하려고 :
List<TFilterType> selectedBooleanFilterTypes = filterTypeBean
.getSelectedBooleanFilterTypes();
setSelectedFilterTypesNames()가 실행되지 않는 것 같습니다. 어떤 제안을하면 문제가 무엇이며 어떻게 수정해야합니까? 미리 감사드립니다!
질문 : 변환기에서 부분 :
public Object getAsObject(FacesContext context, UIComponent component, String value) {
// It will create bean when not done yet.
FilterTypeBean filterTypeBean = context.getApplication().evaluateExpressionGet(context, "#{filterTypeBean}", FilterTypeBean.class);
for (TFilterType type : filterTypeBean.listBooleanFilterTypes()) {
if (type.getFilterTypeName().equals(value)) {
return type;
}
}
return null;
}
먼저 모든 논리를 'listBooleanFilterTypes' 밖으로 이동하십시오. [getter에서 비즈니스 로직을 수행하지 마십시오.] (http://stackoverflow.com/a/14570012/1530938). 그런 다음 변환이 실패하지 않고 설정 기가 호출되고 있는지 확인하십시오. – kolossus
첫 번째로드에서 SET 메소드가 여전히 실행되지 않으면 오류 양식이 표시됩니다. : 유효성 검증 오류 : 값이 유효하지 않습니다. 페이지를 새로 고침 할 때 setther가 메서드를 설정하고 작동하지만 서버를 다시 시작하고 응용 프로그램을 실행 한 후 매 1 번째로드가 문제가되는 이유를 이해할 수 없습니다. –
Tot
이 오류는 속성의 값이 null이기 때문에 변환기에서 발생합니다. 페이지의 첫 번째로드에서 값을 강제로 설정하는 방법은 무엇입니까? 내가 뭔가를 잘 설명하지 못했다면 나에게 부탁해! – Tot