0

JSFを使用してオブジェクトを更新するという問題があります。:/

これは私のページです:

<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:head>
    <title>Listagem de mesas do restaurante</title>
</h:head>
<h:body>
    Escolha uma mesa de sua preferência:<br/>

    <ui:repeat value="#{indexBean.mesas}" var="mesa">
        <br/>Table #{mesa.numero} <h:commandButton id="reservar" value="BloqMesa" action="#{indexBean.reservaMesa(#REFERENCEDTable)}"></h:commandButton><br/>
    </ui:repeat>

</h:body>

ちなみに「テーブル」はデータベース内のテーブルではありませんが、「テーブル」はテーブルの名前です!

commandButtonをクリックしたときの実際の行のテーブルを更新したい。本当の問題は、代わりにパラメーターを渡す必要があるものです#REFERENCEDTable

アイデア??

前もって感謝します

4

1 に答える 1

1

まず、すべてのUICommandコンポーネント(<h:commandButton><h:commandLink>など)は<h:form>、データをサーバーに送信する内部にある必要があります。フォームがまったくないため、アクションが呼び出されることはありません。<h:form>内部を使用する<ui:repeat>と、Mojarraの実装にバグがあることに注意してください。MyFacesを使用している場合は、問題はありません。<h:dataTable>それでも、これは代わりに使用する場合のようです。

次に、mesa変数を引数としてメソッドに渡すことができますIndexBean#reservaMesa。このコード(または同様のもの)があることを確認してください

@ManagedBean
@ViewScoped
public class IndexBean {

    private List<Mesa> mesas;

    public IndexBean() {
    }

    //getters and setters...

    public void reservaMesa(Mesa mesa) {
        //code to update a Mesa
    }
}

そして、Faceletのメソッドにmesa変数を渡すことができます。reservaMesa

<h:commandButton id="reservar" value="BloqMesa"
    action="#{indexBean.reservaMesa(mesa)}" />

最後に、次のJSFコードを使用できます。

<h:form>
    <!-- replacing ui:repeat by h:dataTable -->
    <h:dataTable value="#{indexBean.mesas}" var="mesa">
        <h:column>
            <f:facet name="header">
                <h:outputText value="Mesas"/>
            </f:facet>
            Table #{mesa.numero}
        </h:column>
        <h:column>
            <f:facet name="header">
                <h:outputText value="Actions"/>
            </f:facet>
            <h:commandButton id="reservar" value="BloqMesa"
                action="#{indexBean.reservaMesa(mesa)}" />
        </h:column>
    </h:datatable>
</h:form>
于 2012-11-08T22:43:01.023 に答える