首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSF2.0 outputText呈现selectonemenu

JSF2.0 outputText呈现selectonemenu
EN

Stack Overflow用户
提问于 2014-02-24 11:21:39
回答 1查看 1.7K关注 0票数 1

我正在使用JSF-2,当h:selectOneMenu值更改为'A‘时,我想显示一个Outputtext,但它不起作用:

这里是视图:

代码语言:javascript
复制
 <p:column>
<p:selectOneMenu id="type"
value="#{Controller.typeR}" style="width:100px;">
    <f:selectItem itemLabel="--Selectionner--" itemValue="-1" />
    <f:selectItem itemLabel="A" itemValue="1" />
    <f:selectItem itemLabel="B" itemValue="2" />
    <f:selectItem itemLabel="C" itemValue="3" />
<p:ajax update="test"
 listener="#{Controller.handleTypeChange}" />
</p:selectOneMenu>
 </p:column>
 <p:column>
  <h:outputText id ="test" value="A OK :" rendered="#{Controller.typeAOk}" />
 </p:column>

托管bean

代码语言:javascript
复制
 @SuppressWarnings("serial")
 @ManagedBean(name = "Controller")
 @ViewScoped
 public class NoIe{

 public void handleTypeChange(){        
        if (typeR.equals("1")) {
            setTypeAOk(true);
            System.out.print(typeAOk);
             }}

    //Getter and Setter

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-24 11:40:44

由于#{Controller.typeAOk}似乎是假的,所以您的outputText不会成为生成的html页面的一部分,因此无法进行更新。

在这种情况下,您需要将outputText包装在另一个组件中,然后更新总是呈现的组件。下面是一个示例:

代码语言:javascript
复制
<p:column>
    <p:outputPanel id="test">
        <h:outputText  value="A OK :" rendered="#{Controller.typeAOk}" />
    </p:outputPanel>
</p:column>

再次:只有呈现的组件才能被更新。

下面是我用来测试解决方案的完整代码(请注意,您也可以使用panelGroup ):

代码语言:javascript
复制
<h:form>
    <p:dataTable value="#{viewMBean.list}" var="l">
        <p:column>
            <p:selectOneMenu id="type" value="#{viewMBean.id}" style="width:100px;">
                <f:selectItem itemLabel="--Selectionner--" itemValue="-1" />
                <f:selectItem itemLabel="A" itemValue="1" />
                <f:selectItem itemLabel="B" itemValue="2" />
                <f:selectItem itemLabel="C" itemValue="3" />
                <p:ajax update="test" />
            </p:selectOneMenu>
        </p:column>
        <p:column>
            <h:panelGroup id ="test">
                <h:outputText value="A OK :" rendered="#{viewMBean.id eq 1}" />
            </h:panelGroup>
        </p:column>
    </p:dataTable>
</h:form>

ManagedBean

代码语言:javascript
复制
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class ViewMBean implements Serializable {

    private Integer id;

    private List<SimpleBean> list;

    @PostConstruct
    public void setup() {
        list = new ArrayList<SimpleBean>();
        list.add(new SimpleBean(11, "A"));
        list.add(new SimpleBean(22, "B"));
        list.add(new SimpleBean(33, "C"));
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public List<SimpleBean> getList() {
        return list;
    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21986289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档