p:ajax和渲染p:inputText的问题是自动向用户显示inputText

时间:2014-06-09 23:57:45

标签: html ajax jsf primefaces render

我想在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

0 个答案:

没有答案