Обновление с использованием 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>