동일한 페이지의 항목 목록을 편집하고 싶습니다. 각 항목은 별도의 양식을 사용하여 편집해야합니다. ui : repeat 내에서 h : form을 만들고 있습니다. 마지막 양식이 제출 될 때만 사용자 입력이 관리 빈에 적용됩니다. 다른 모든 형식의 경우 사용자 입력이 모델에 적용되지 않습니다. 뷰에서 <h:form> 내에서 <ui:repeat> 전적으로 작동하지 않으며 마지막에만 <h:form>이 처리됩니다.
@ManagedBean
public class Controller {
Logger logger = Logger.getLogger("TestWeb");
private List<Customer> customerList;
public List<Customer> getCustomerList() {
if (customerList == null) {
customerList = new ArrayList<Customer>();
customerList.add(new Customer("Daffy Duck", "[email protected]"));
customerList.add(new Customer("Bugs Bunny", "[email protected]"));
customerList.add(new Customer("Samity Sam", "[email protected]"));
}
return customerList;
}
public String updateCustomer(Customer c) {
logger.info("Updating: " + c.getName());
return null;
}
}
, 나는 모든 솔루션없이 시간을 검색
<ui:repeat var="c" value="#{controller.customerList}">
<h:form>
<h3>Edit Customer</h3>
Name: <h:inputText value="#{c.name}"/><br/>
E-mail: <h:inputText value="#{c.email}"/><br/>
<h:commandButton value="Update"
action="#{controller.updateCustomer(c)}"/>
</h:form>
</ui:repeat>
있습니다. 이 작업을 수행하는 올바른 방법은 무엇입니까? 단일 폼을 사용하고 ui : repeat를 사용하여 해킹 할 수 있습니다. 그러나 많은 문제가 있으며 그 길을 택하지 않을 것입니다. 감사.
' '만 ' '으로 감쌀 수 있습니다. –
kolossus
@kolossus, 확실합니까? 양식에서 명령 단추를 래핑하려고했습니다. 그것은 그 문제를 해결하지 못했습니다. – RajV
오? 되돌아 보면, 마크 업이 렌더링 될 때와 마찬가지로, 여러분이'updateCustomer' 메쏘드에 제공하는 인자는 마지막 값으로 설정되었을 것입니다. ' '을 사용하여 선택한 값을 뒷받침 빈에 제공하고 엔티티의 ID 만 전달하면됩니다. 나는 이것을 사용했기 때문에 효과가 있다고 확신한다. 그래도 ID를 앞뒤로 통과시키는 보안 위험이 있음을 알립니다. 매개 변수를 어떻게 든 보호하고 싶을 수도 있습니다 –
kolossus