如何创建一个“编辑”按钮,以便在单击该按钮时将其更改h:outputText
为h:inputText
?
问问题
5445 次
1 回答
6
使用rendered
属性:
<h:outputText value="#{bean.entity.property}" rendered="#{not bean.editmode}" />
<h:inputText value="#{bean.entity.property}" rendered="#{bean.editmode}" />
...
<h:commandButton value="Edit" action="#{bean.edit}" rendered="#{not bean.editmode}" />
<h:commandButton value="Save" action="#{bean.save}" rendered="#{bean.editmode}" />
在视图范围的bean中使用这个:
private boolean editmode;
public void edit() {
editmode = true;
}
public void save() {
entityService.save(entity);
editmode = false;
}
public boolean isEditmode() {
return editmode;
}
// ...
请注意,由于本答案第 5 点中提到的原因,视图范围内的 bean 很重要:commandButton/commandLink/ajax action/listener method not invoked or input value not updated。
或者,您可以将disabled
输入组件上的属性与 CSS 的快照结合使用,这基本上使它看起来像一个输出组件(通过删除边框)。
<h:inputText value="#{bean.entity.property}" disabled="#{not bean.editmode}" />
...
<h:commandButton value="Edit" action="#{bean.edit}" rendered="#{not bean.editmode}" />
<h:commandButton value="Save" action="#{bean.save}" rendered="#{bean.editmode}" />
与例如
input[disabled] {
border: 0;
}
同样在这里,bean 必须是视图范围的。另请参阅如何选择正确的 bean 范围?
于 2011-08-23T21:04:52.800 回答