Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用PrimeFaces在p:SelectOne菜单中选择特定值后自动显示文本字段?_Java_Jsf_Primefaces_Selectonemenu - Fatal编程技术网

Java 如何使用PrimeFaces在p:SelectOne菜单中选择特定值后自动显示文本字段?

Java 如何使用PrimeFaces在p:SelectOne菜单中选择特定值后自动显示文本字段?,java,jsf,primefaces,selectonemenu,Java,Jsf,Primefaces,Selectonemenu,当我在p:selectOneMenu中选择某个特定项时,我想显示一个新的文本字段,或者不可禁用它 <p:selectOneMenu id="especie" value="#{histopatologiaMB.histopatologia.especie}"> <f:selectItem itemLabel="Selecione" itemValue="" /> <f:selectItem itemLabel="Canino" itemValue="

当我在p:selectOneMenu中选择某个特定项时,我想显示一个新的文本字段,或者不可禁用它

<p:selectOneMenu id="especie" value="#{histopatologiaMB.histopatologia.especie}">
    <f:selectItem itemLabel="Selecione" itemValue="" />
    <f:selectItem itemLabel="Canino" itemValue="Canino" />
    <f:selectItem itemLabel="Caprino" itemValue="Caprino" />
    <f:selectItem itemLabel="Coelho" itemValue="Coelho" />
    <f:selectItem itemLabel="Felino" itemValue="Felino" />
    <f:selectItem itemLabel="Suíno" itemValue="Suíno" />
    <f:selectItem itemLabel="Equino" itemValue="Equino" />
    <f:selectItem itemLabel="Ovino" itemValue="Ovino" />
    <f:selectItem itemLabel="Ave Doméstica" itemValue="Ave Doméstica" />
    <f:selectItem itemLabel="Silvestre" itemValue="Silvestre" />
    <p:ajax update="detalhe" event="change" listener="#{bean.listener}" />
</p:selectOneMenu>
代码:


用户选择项目“Silvestre”后,应显示以下inputMask或inputText:

<p:inputMask id="detalhe" size="30" value="#{histopatologiaMB.histopatologia.silvestreDetalhe}" maxlength="255"/>


我一直在寻找解决方案,我找到了一些,但没有一个解决我的问题。如果有人知道如何解决这个问题,请帮助我。

您应该在SelectOne菜单中添加一个侦听器

<p:selectOneMenu id="especie" value="#{histopatologiaMB.histopatologia.especie}">
    <f:selectItem itemLabel="Selecione" itemValue="" />
    <f:selectItem itemLabel="Canino" itemValue="Canino" />
    <f:selectItem itemLabel="Caprino" itemValue="Caprino" />
    <f:selectItem itemLabel="Coelho" itemValue="Coelho" />
    <f:selectItem itemLabel="Felino" itemValue="Felino" />
    <f:selectItem itemLabel="Suíno" itemValue="Suíno" />
    <f:selectItem itemLabel="Equino" itemValue="Equino" />
    <f:selectItem itemLabel="Ovino" itemValue="Ovino" />
    <f:selectItem itemLabel="Ave Doméstica" itemValue="Ave Doméstica" />
    <f:selectItem itemLabel="Silvestre" itemValue="Silvestre" />
    <p:ajax update="detalhe" event="change" listener="#{bean.listener}" />
</p:selectOneMenu>
在监听器内部,您必须完成显示或不显示输入掩码所需的工作。当需要显示它时,将布尔值传递为true

public void listener() {
    //Do some stuff for showing or not the inputMask.
    renderedInputMask = true;
}
并使用布尔值将渲染属性添加到inputMask

<h:panelGrid id="detalhe" columns="1">
    <p:inputMask size="30" rendered="#{bean.renderedInputMask}" value="#{histopatologiaMB.histopatologia.silvestreDetalhe}" maxlength="255"/>
</h:panelGrid>


我希望这能对你有所帮助。

试试这个,这对我很有用

<p:selectOneMenu id="especie" value="#{histopatologiaMB.histopatologia.especie}">
  <f:selectItem itemLabel="Canino" itemValue="Canino" />
 <f:selectItem itemLabel="Caprino" itemValue="Caprino" />

  <p:ajax update=":formId:detalhe" listener="#{bean.ajaxMethod}"  />


私有布尔showText=false;
//showText的Getter setter
公共方法(){
if(getspecie().isEmpty()){
设置显示文本(假);
}否则{
设置显示文本(真);
}
}

您必须将
p:inputMask
放入一个包装器中,该包装器将包含
id=“detalhe”
我按照您的建议做了,Lamq。在listener()中,我输入了以下代码:“if(historopatologia.getspecie().equalsIgnoreCase(“Silvestre”){renderInputMask=true;}”。但是,直到我将p:ajax中的更新从“detalhe”更改为“:form:test”,并将inputMask放在。它可以工作,但inputMask字段是在主窗体之外生成的,而不是在p:SelectOne菜单旁边生成的。你知道如何让inputMask字段显示在Selecomenu的旁边吗?是的,但是我需要你的完整xhtml页面,你能用它更新你的帖子吗?
<p:selectOneMenu id="especie" value="#{histopatologiaMB.histopatologia.especie}">
  <f:selectItem itemLabel="Canino" itemValue="Canino" />
 <f:selectItem itemLabel="Caprino" itemValue="Caprino" />

  <p:ajax update=":formId:detalhe" listener="#{bean.ajaxMethod}"  />
<p:inputText id="detalhe" size="30" value="#{histopatologiaMB.histopatologia.silvestreDetalhe}" maxlength="255" style="display: #{userBean.showText ? '' : 'none'}"> 




private Boolean showText = false;  

//Getter-setter of showText

public void ajaxMethod() {
    if (getEspecie().isEmpty()) {
        setShowText(false);
    } else {
        setShowText(true);
    }
}