Атрибут JSF rendered
определит, должен ли компонент быть визуализирован/видимым или нет.
Если
<h:commandButton value="Undo" rendered="#{false}" />
Тогда будет скрыт ваш выше Undo
кнопку.
rendered
Атрибут может быть привязан к объекту ManagedBean
. Если вам нужна эта динамика, вам нужно обновить компонент, чтобы увидеть результат.
Вот небольшой пример: XHTML:
<h:panelGroup id="doBtnPG">
<h:commandButton value="Do" rendered="#{myBean.showDo}" action="#{myBean.doAction}">
<f:ajax render="unDoBtnPG"/>
</h:commandButton>
</h:panelGroup>
<h:panelGroup id="unDoBtnPG">
<h:commandButton value="Un Do" rendered="#{myBean.showUndo}" action="#{myBean.undoAction}">
<f:ajax render="doBtnPG"/>
</h:commandButton>
</h:panelGroup>
ManagedBean:
@ManagedBean
@ViewScoped
public class MyBean{
private boolean showDo=true;
private boolean showUndo=true;
public void doAction(){
showUndo=false;
}
public void undoAction(){
showDo=false;
}
//SETTER and GETTERS
}
В приведенном выше примере, при нажатии на одну кнопку соответствующий метод действия делает свойство, на котором другая кнопка отображается как false
, f:ajax
будет отображать/обновлять другую кнопку panelGroup
, чтобы отразить изменения.
Поскольку вы отметили этот вопрос, как Primefaces
, вот код XHTML для Primefaces:
<h:panelGroup id="doBtnPG">
<p:commandButton value="Do" rendered="#{myBean.showDo}"
action="#{myBean.doAction}" update="unDoBtnPG"/>
</h:panelGroup>
<h:panelGroup id="unDoBtnPG">
<p:commandButton value="Un Do" rendered="#{myBean.showUndo}"
action="#{myBean.undoAction}" update="doBtnPG"/>
</h:panelGroup>
Обратите внимание, что на Primefaces commandButtons
вам не нужно использовать f:ajax
или p:ajax
явно, потому что они являются Ajax по умолчанию.
Обратите внимание, что функции enable()
и disable()
, предоставляемые Prime, являются только клиентскими. Если атрибут disabled
равен false
, и если вы включите кнопку с помощью enable()
, она не будет запускать ваш метод действий.
Атрибут указывает, является ли компонент визуализированным или нет, не следует путать с атрибутом 'disabled', который делает компонент визуализированным, но не пригодным для использования (в вашем случае можно щелкнуть). Не могли бы вы предоставить код для двух кнопок? –
sinclair