지난 3 일 동안 나는 다음과 같은 작업을 해왔습니다. 뒷받침 빈에서 데이터를 가져오고 세 개의 라디오 버튼이있는 열을 보여주는 데이터 테이블을 가지고 있습니다. 페이지가 예상대로 렌더링되고 라디오 버튼이 올바른 값을 얻습니다. 그러나 양식을 제출하는 것은 의도 한대로 수행되지 않습니다. 양식을 제출할 때마다 해당 객체의 값은 표의 마지막 객체 값으로 설정됩니다. 이상하게도, Fiddler를 통해 전송되는 양식을 볼 때 마지막 행의 개체 값을 복제하는 대신 올바른 값이 전송됩니다. selectOneRadio id와 관련이 있다고 생각하지만 id에 대한 동적 값을 설정하면 오류가 발생합니다.부자 제출 : h 열의 datatable : selectOneRadio
미리 감사 드리며 더 많은 정보가 필요하면 알려 주시기 바랍니다.
<rich:dataTable id="facilities_organisation"
var="orgFacility"
value="#{organisationFacilitiesHandler.findAllFacilitiesForCurrentOrganisation}">
<rich:column>
<f:facet name="header">
<h:outputText value="Naam" />
</f:facet>
<h:outputText value="#{orgFacility.facility.name}" />
</rich:column>
<rich:column>
<f:facet name="header">
<h:outputText value="Beschikbaar?" />
</f:facet>
<h:selectOneRadio id="facility" value="#{orgFacility.availabilityType.id}">
<f:selectItems value="#{organisationFacilitiesHandler.findAllAvailabilityTypes}" />
</h:selectOneRadio>
</rich:column>
</rich:dataTable>
는 Backbean
private Organisation activeOrganisation = null;
private List<OrganisationFacility> facilities = new ArrayList<OrganisationFacility>();
public Organisation getActiveOrganisation() {
return this.activeOrganisation;
}
public void setActiveOrganisation(Organisation organisation) {
activeOrganisation = organisation;
}
public List<OrganisationFacility> getFindAllFacilitiesForCurrentOrganisation() {
this.facilities = new ArrayList<OrganisationFacility>();
if (this.activeOrganisation != null) {
//Error handling omitted
this.facilities = facilityManager.findAllFacilitiesForOrganisation(this.activeOrganisation);
}
return this.facilities;
}
public void setFindAllFacilitiesForCurrentOrganisation(List<OrganisationFacility> facilities) {
//This function doesn't ever seem to get called...
LOG.debug("setFindAllFacilitiesForCurrentOrganisation was called");
}
public List<SelectItem> getFindAllAvailabilityTypes() {
List<SelectItem> selectItems = new ArrayList<SelectItem>();
//Error handling omitted
List<AvailabilityType> types = this.facilityManager.findAllAvailabilityTypes();
for (AvailabilityType t : types)
selectItems.add(new SelectItem(t.getId(), t.getLabel() + (t.getName().equals("specific") ? " opleiding" : "")));
return selectItems;
}
public String save() {
AvailabilityType defaultType = facilityManager.defaultAvailabilityType();
if (defaultType == null)
return "showOrganisation";
for (Iterator<OrganisationFacility> it = this.facilities.iterator(); it.hasNext();) {
OrganisationFacility f = it.next();
//Business code omitted for readability
//At this point every f.AvailabilityType has already been duplicated from the last object in the datatable
}
return "showOrganisation";
}
추가' '시간'에서 : selectOneRadio' –
나는 것을 시도 , 그러나 그것은 또한 약간의 문제를 가지고 있었다. 댓글을 주셔서 감사합니다. 그동안 나는 해결책을 생각해 냈습니다. 누군가 내가 실수 한 것과 동일한 실수를 저지르는 경우에 대비하여 답변으로 추가하겠습니다. –