我有一个HtmlDatatable,
<h:form>
<h:dataTable var="entity" value="#{bean.entities}">
<h:column>
<f:facet name="header">ColumnA</f:facet>
<h:commandButton value="edit" actionListenner="#{bean.edit()}" />
<hcommandButton value="save" actionListenner="#{bean.save(entity)} rendered="false"/>
<h:inputText value="#{entity.value}"/>
</h:column>
</h:dataTable>
</h:form>
当我单击CommandButton编辑时,我想显示CommandButton保存。如何从Bean访问保存在我的方法edit()中的CommandButton?
public void edit()
{
//TODO get the button save from the same row as the button triggered.
//TODO switch rendered to true.
}
答案 0 :(得分:1)
请勿尝试在edit()方法内访问保存的CommandButton。在您的实体中添加一个名为editMode之类的布尔属性,然后尝试将您的实体传递给这样的edit方法
<h:commandButton value="edit" actionListenner="#{bean.edit(entity)}" />
现在在您的edit()方法中,将您的实体添加为参数并在您的实体上启用编辑模式
public void edit(Entity entity)
{
entity.setEditMode(true);
}
现在,EL可以使commandButton的渲染属性可以像这样检查实体的editMode
<h:commandButton value="edit" actionListenner="#{bean.edit(entity)}" rendered="#{!entity.editMode}"/>
<h:commandButton value="save" actionListenner="#{bean.save(entity)}" rendered="#{entity.editMode}"/>
因此,如果editMode属性为true,则现在应该看到保存按钮。隐藏隐藏编辑按钮的方法相同