JSF/PrimeFaces:基于选择的可见性

JSF/PrimeFaces: Selection based visibility

提问人:TheIngo 提问时间:9/22/2021 最后编辑:TheIngo 更新时间:9/22/2021 访问量:85

问:

我想显示/现在显示(例如)基于广播选择的文本。
在 ajax 样式中,无需往返服务器。
如何使用 JSF/PrimeFaces 执行此操作?

  <h:outputText value="Show some stupid Text." id="testShowText" />

  <p:selectOneRadio id="testRadio" widgetVar="testRadio" value="True" layout="grid" columns="1">
    <f:selectItem itemLabel="Show Text" itemValue="True"/>
    <f:selectItem itemLabel="Do NOT show Text" itemValue="False"/>
  </p:selectOneRadio>

更新

我在测试中以这种方式管理了它,但我不确定,这是否是“最佳实践”,我有一些疑问;我真的需要一个托管的 Bean 吗?

首先,我创建了一个 Bean 来存储所选值:

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class ShowTextBean {

    private boolean showBool  = false;
    private String showString = "False";
    
    public ShowTextBean() {
    }

    public boolean isShowBool() {
        return showBool;
    }

    public void setShowBool(boolean showBool) {
        this.showBool = showBool;
    }

    public String getShowString() {
        return showString;
    }

    public void setShowString(String showString) {
        this.showString = showString;
    }
}

然后,我将 Facelets 代码更改为:

  <p:panel id="testShowTextPanel" style="display: #{showTextBean.showString eq 'False' ? 'none' : 'block'} ">
    <h:outputText value="Show some stupid Text." id="testShowText"/>
  </p:panel>

  <p:selectOneRadio id="testRadio" widgetVar="testRadio" value="#{showTextBean.showString}" layout="grid" columns="1">
    <f:selectItem itemLabel="Show Text" itemValue="True"/>
    <f:selectItem itemLabel="Do NOT show Text" itemValue="False"/>
    <p:ajax update="testShowTextPanel" />
  </p:selectOneRadio>
AJAX JSF PrimeFaces 客户端 facelet

评论

0赞 WoAiNii 9/22/2021
如果您不想要 bean,也可以定义 a 来存储该值。在我看来,这些解决方案是平等的,因此您可以同时使用两者。ui:param
0赞 ivasanpag 9/23/2021
您可以删除面板组件,并在 outputText 中包含条件可见性。<h:outputText value=“显示一些愚蠢的文本” id=“testShowText” style=“display: #{showTextBean.showString eq 'False' ?'none' : 'block'} “/> 并在事件为 ”change“ 时更新 selectOneRadio 中的 testShowText

答: 暂无答案