Habe verschiedene Felder mit Werten die standardmäßig nicht editierbar sein sollen (disabled="#{foo.disabled}"), erst nach Klick auf einen Button soll das ermöglicht werden. Habe also eine Variable boolean disabled = true; angelegt, ein p:commandButton negiert bei Knopfdruck diesen Wert und updated die h:form.
Prinzipiell funktioniert das ohne Problem, solange das p:inplace, dessen disabled getoggled wurde, ein p:inputText umfasst. Handelt es sich um ein p:selectOneMenu, so wird das einfach nichtmehr gerendert. Wenn ich den Button danach wieder drücke (also disabled wieder true), erscheint das selectOneMenu wieder. InputTexts funktionieren wie erwartet (sind nicht-editierbar/editierbar).
Hier mein code in kurzform :
<h:form id="detailForm"> <p:inplace label="#{foo.bar}" editor="true" disabled="#{foo.disabled}"> <p:selectOneMenu value="#{foo.bar}"> <f:selectItems value="#{foo.alleBarsDieEsGibtBlaBlub}" /> </p:selectOneMenu> </p:inplace>
<p:inplace label="#{foo.bar}" editor="true" disabled="#{foo.disabled}"> <p:inputText value="#{foo.bar}" /> </p:inplace> <p:commandButton actionListener="#{foo.toggleEdit}" value="Edit" update=":detailForm" /></h:form>
Die Methode in meiner Bean :
@Component
public class Foo {
private boolean disabled = true;
public void toggleEdit(ActionEvent event) {
boolean disabled = this.disabled ? false : true;
this.disabled = disabled;
}
// Getter, setter..
}
Was mache ich falsch?