我想在p:selectOneMenu中选择特定选项时自动呈现输入文本字段。有趣的是,它使用内置的eclipse浏览器完美运行,但在任何其他浏览器中,这都不起作用。我认为问题出在我的HTML代码上,但我不知道为什么。
HTML code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<h:outputStylesheet library="css" name="style.css" />
<h:outputScript library="js" name="locale-primefaces.js" />
<link rel="shortcut icon" href="../../../../resources/img/ufpalogo.png" />
</h:head>
<h:body>
<table width="900" border="0" align="center" cellpadding="1" cellspacing="0" bgcolor="#FFFFFF">
<tr>
<td><ui:include src="/pages/protected/template/topo.xhtml" /></td>
</tr>
<tr>
<td><table width="100%" border="0" cellspacing="1" cellpadding="1">
<tr>
<td><ui:include src="/pages/protected/template/menuAdm.xhtml" /></td>
</tr>
<tr>
<td colspan="2"><div align="center" class="titulo">Example Page</div></td>
</tr>
<h:form id="form1" name="form1" method="post" action="" enctype="multipart/form-data">
<p:panel styleClass="panel-div" header="Animal Data">
<p:panelGrid styleClass="grid-div">
<p:row>
<p:column styleClass="ce">
<h:outputText value="Especies: " />
</p:column>
<p:column styleClass="cd">
<p:selectOneMenu id="especies"
value="#{histopatologyBean.histopatology.especies}" required="true">
<f:selectItem itemLabel="Select" itemValue="" />
<f:selectItem itemLabel="Canine" itemValue="Canine" />
<f:selectItem itemLabel="Caprine" itemValue="Caprine" />
<f:selectItem itemLabel="Rabbit" itemValue="Rabiit" />
<f:selectItem itemLabel="Swine" itemValue="Swine" />
<f:selectItem itemLabel="Other" itemValue="Other" />
<p:ajax update=":form1:panel-detail" event="change"
listener="#{histopatologyBean.especiesListener}" />
</p:selectOneMenu>
</p:column>
</p:row>
<p:row>
<p:column styleClass="ce">
</p:column>
<p:column styleClass="cd">
<h:panelGrid id="panel-detail">
<p:inputText id="other"
rendered="#{histopatologyBean.renderedInputMask}"
value="#{histopatologyBean.histopatology.otherDetail}"
maxlength="255" size="60" />
<p:watermark for="detail"
value="Type detail" />
</h:panelGrid>
</p:column>
</p:row>
监听器:
private boolean renderedInputMask = false;
public void especiesListener() {
if (histopatologiy.getEspecies().equalsIgnoreCase("Other")) {
setRenderedInputMask(true);
} else {
setRenderedInputMask(false);
}
}
正如我所说,这在eclipse浏览器中完美无缺,但在其他任何浏览器中都没有。一个奇怪的事实是,如果我在打开表单之前放置div标签并在表单之后结束div,则该字段出现在其他浏览器上,但不保存我键入的值,发送空值。
如果有人知道出了什么问题,请帮助我。我尝试了一切。 Ps。:My Bean是@SessionScoped