Обновление с использованием JSF

У меня есть проблема, которая заключается в обновлении объекта с использованием 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>

Кстати, "Таблица" не является таблицей в базе данных, "Таблица" - это имя таблицы!

Я хочу обновить таблицу фактической строки, когда я нажимаю кнопку command. Реальный вопрос в том, что я должен передать вместо параметров #REFERENCEDTable

Идеи??

заранее спасибо

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
    }
}

И вы можете передать mesa переменная к вашему reservaMesa метод в Facelet:

<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>
Другие вопросы по тегам