2012-09-28 2 views
0

저는 primefaces 데이터 테이블을 가지고 있습니다. 데이터베이스에서 채 웁니다. 필드 중 하나는 확인란으로 표시되는 부울 값입니다. 확인란을 선택하거나 선택 취소하면 변경 사항을 다시 데이터베이스에 저장할 수 있습니다.JSF 데이터베이스 테이블의 행을 데이터베이스에 저장할 수 없습니다.

저장하려는 행의 현재 값을 관리 빈에 전달하려고 시도했지만 새 값의 확인란이 현재 행 객체에 반영되지 않았습니다. 변경 내용을 DB에 성공적으로 저장할 수 있도록 현재 행 개체에 변경 내용을 적용하려면 어떻게해야합니까?

내가 지금하고있는 일은 ... 필요한 것을 제공하려고 노력했습니다. 정보가 너무 많거나 너무 적 으면 알려주세요. 감사.

@ManagedBean(name = "itemManagerBean") 
@ViewScoped 
public class ItemManagerBean implements Serializable { 
... 
    public ArrayList<Item> getAllItemsForUser() { 
     List list = ecf.findByPartyId(user.getPartyId()); 
     ArrayList<Item> itemList = new ArrayList<>(list); 
     return (itemList); 
    } 
... 
    public String saveItem(Item item){ 
     System.out.println(item.toString()); 
     ecf.updateRecord(item); 
     return (null); 
    } 
} 

//item class 
public class Item { 
    private BigInteger itemId; 
    private String name; 
    priave boolean saleable; //database column is not null 

    //getters and setters 
} 


//facelet 
<h:form> 
<p:dataTable id="id_itemList" 
      var="item" 
      value="#{itemManagerBean.allItemsForUser}" > 

    <p:column headerText="ID"> 
     <h:outputText value="#{item.itemId}" /> 
    </p:column> 

    <p:column headerText="Name"> 
     <h:outputText value="#{item.name}" /> 
    </p:column> 

    <p:column headerText="Saleable" > 
     <p:selectBooleanCheckbox value="#{item.saleable}" /> 
    </p:column> 

    <p:column width="15" > 
     <p:commandButton id="id_saveRowButton" icon="ui-icon-disk" 
      title="Save" action="#{itemManagerBean.saveItem(item)}"/> 
    </p:column> 
</p:dataTable> 
</h:form> 

답변

1

당신은 사용자가 commandButton를 클릭 할 때 그 값을 ItemManagerBeanselectedItem 속성을 생성하고 업데이트해야합니다 : XHTML의 페이지에서

ItemManagerBean에서

private Item selectedItem; 
// getter and setter 

<p:column width="15" > 
    <p:commandButton id="id_saveRowButton" icon="ui-icon-disk" 
     title="Save" action="#{itemManagerBean.saveItem}"> 
     <f:setPropertyActionListener value="#{item}" target="#{itemManagerBean.selectedItem}" /> 
    </p:commandButton> 
</p:column> 

(item부터 saveItem까지 전달할 필요는 없습니다. 입력 항목을 수락하는 대신 selectedItem과 작동 시키려면 관리 빈에서 saveItem을 수정하십시오.

링크 :

example in the PrimeFaces showcase

Passing parameter to JSF action

BalusC blog

관련 문제