경우의 int는 [], 다음 baseNumber
는 int이며 :
당신은 뭔가를해야한다. 이제 입력 텍스트 구성 요소를이 int에 바인딩합니다.
그러나이 바인딩은 양방향이 아닙니다. input 엘리먼트는 그것이 바인딩 된 엘리먼트 만 보게되고, 그것이 출현 한 콜렉션이 아니다. 따라서이 컬렉션을 업데이트하는 방법에 대한 지식이 없습니다.
따라서 업데이트 할 수있는 항목에 바인딩해야합니다. 예를 들어 목록이 내부 정수에 대한 getter와 setter를 가진 IntHolder 포함 된 경우 사용합니다 (의 getInt()와 setInt()를 말한다) 및 목록 ArrayList와 것 : 다시 게시 후
<ui:repeat value="#{drawsetController.selected.editableBaseSetList}" var="baseNumber">
<h:inputText value="#{baseNumber.int}"/>
</ui:repeat>
, JSF 제공된 값으로 목록의 각 IntHolder에 대해 setInt() 메서드를 호출합니다.
정수 또는 다른 변경 불가능한 형식을 이미 보유하고있는 컬렉션의 경우 위에서 언급 한 컬렉션으로 변환하는 번거 로움이 될 수 있습니다. 그러나 또 다른 해결책이 있습니다. 여기서 var
속성을 ui:repeat
으로 사용하지 않고 색인을 사용합니다. 그런 다음 h:inputText
에이 색인 var로 색인화 된 모음에 대한 바인딩을 제공합니다.
예.
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean
@ViewScoped
public class RepeatBean {
List<Integer> list;
public List<Integer> getList() {
return list;
}
@PostConstruct
public void initList() {
list = new ArrayList<Integer>();
list.add(10);
list.add(20);
list.add(30);
}
public String save() {
// list now contains the values provided by the user.
return "";
}
}
다음 Facelet에 사용 :
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<h:body>
<h:form>
<ui:repeat value="#{repeatBean.list}" varStatus="status">
<h:inputText value="#{repeatBean.list[status.index]}" />
</ui:repeat>
<h:commandButton value="Save" action="#{repeatBean.save}" />
</h:form>
</h:body>
</html>
이 초기 화면에 10 20 30이 표시됩니다
는 다음 콩을 가정 해 봅시다.번호를 변경하고 저장을 클릭하면 예를 들어 확인할 수 있습니다. 목록 인스턴스 변수에 업데이트 된 숫자가 들어있는 중단 점입니다.
사실 나는 그 자신을 발견했습니다. 그래서 사실 나는 지금 baseNumber.storedInteger를 사용하고 있고 setters는 correcty입니다. 이제 객체 배열에서 원래의 int 배열을 만들어야합니다. – aciobanu
내 문제는 사실 내 관리 빈 proprety 그것은 배열, 그리고 배열의 각 구성원에 대한 텍스트 입력하고 데이터베이스에 저장하고 싶습니다. 이것은 내가 아직 성취하지 못한 것입니다. – aciobanu
동일한'# {managedBean.property} '에'value'를 가리키는 여러 개의'inputText'를 시도해 보셨습니까? '많은 목록 상자 선택 '권한을 사용할 수 있다는 것을 알고 있습니까? 물론 문제가 해결되면 ... – bluefoot