Необходимые функции: У меня есть данные с 4 столбцами (уже хорошо работает, с целью пояснения я предоставил только один столбец «Цена»), а в последнем столбце у меня есть значок «изменить». Когда я нажимаю на иконку «Изменить», я бы хотел, чтобы inputText всплывал, где я могу делать свои модификации для каждого столбца в строке. С технической точки зрения я это делаю:Редактирование h: dataTable
В JSF:
<h:dataTable value="#{item.getItemList()}" var="c"
styleClass="order-table"
headerClass="order-table-header"
rowClasses="order-table-odd-row,order-table-even-row">
<h:column>
<f:facet name="header"> Price </f:facet>
<h:inputText value="#{c.price}" size="5" rendered="#{c.editable}" />
<h:outputText value="#{c.price}" rendered="#{not c.editable}" />
</h:column>
<h:column>
<f:facet name="header"> Operation </f:facet>
<h:form>
<h:commandLink action="#{item.editAction(c)}">
<h:graphicImage library="images"
name="modifyIcon.png"
width="20"
rendered="#{not c.editable}"/>
</h:commandLink>
</h:form>
<h:form>
<h:commandLink action="#{item.removeItem(c)}">
<h:graphicImage value="resources/images/deleteIcon.png" width="20" />
</h:commandLink>
</h:form>
</h:column>
</h:dataTable>
В боба:
public String editAction(Item item) {
item.setEditable(true);
return null;
}
и в п классе:
public boolean isEditable() {
return this.editable;
}
public void setEditable(boolean editable) {
this.editable = editable;
}
Тогда, когда я нажимаю на changeIcon.png ничего не происходит. Я бы ожидал появления полей ввода из других столбцов, но они этого не делают. Вы не знаете, где я мог сделать ошибку?
может быть, это что-то делать с областями? Боб и класс модели @ApplicationScoped. –
Почему вы используете отдельный '' для каждого отдельного ''? –
Tiny
Область применения, безусловно, является неправильной для этой цели, но не причиной этой конкретной проблемы. Чтобы исключить один и тот же метод, фактически вызывается метод editAction() 'или нет? Если нет, когда/где именно вы загружаете данные для свойства за 'getItemList()'? Имена переменных в вашем коде, кстати, непротиворечивы и, следовательно, запутывают. Название «item» ссылается на две совершенно разные вещи в вашем коде. – BalusC