0

私はプライムフェイスのデータテーブルを持っています。データベースから入力します。フィールドの 1 つは、チェックボックスで表されるブール値です。チェックボックスをオンまたはオフにすると、変更をデータベースに保存できるようになります。

行の現在の値をマネージド Bean に渡して保存しようとしましたが、チェックボックスの新しい値が現在の行オブジェクトに反映されません。変更を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>
4

1 に答える 1

1

selectedItemでプロパティを作成しItemManagerBean、ユーザーが をクリックしたときにその値を更新する必要がありcommandButtonます。

ItemManagerBean 内

private Item selectedItem;
// getter and setter

xhtmlページで

<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入力項目を受け入れる代わりに、マネージド Bean を変更して動作させるようにしてください)。saveItemsaveItemselectedItem

リンク:

PrimeFaces ショーケースの例

パラメータを JSF アクションに渡す

BalusC ブログ

于 2012-09-28T10:03:11.370 に答える