如果在用户输入style
上的文字后调用事件模糊,如何更新第二个panelGrid上的licplate
?我尝试了下面的代码,但它出错了:
错误[http-bio-8080-exec-28] [render_portlet_jsp:154] javax.faces.FacesException:找不到带标识符的组件 “panelInfo.Show()”从
引用
<p:panelGrid styleClass="noborder valigntop">
<p:row>
<p:column>
<p:panelGrid styleClass="noborder">
<p:row>
<p:column>
<p:inputText id="licplate" value="#{gateBacking.queue.fleet}" >
<p:ajax event="blur" update="panelInfo.Show();" />
</p:inputText>
</p:column>
</p:row>
</p:panelGrid>
</p:column>
<p:column>
<p:panelGrid widgetVar="panelInfo" styleClass="border" style="visibility:hidden;">
<p:row>
//---
</p:row>
</p:panelGrid>
</p:column>
</p:row>
</p:panelGrid>
谢谢!
修改
代码显示隐藏的面板,但在此之后,该按钮不起作用。
...
<p:tab id="tabXXX" title="XXX">
<h:form id="frmXXX">
<script type="text/javascript">
function test(){
$(PrimeFaces.escapeClientId('frmXXX:opt')).css("display","block");
}
</script>
<p:messages id="prmMessage" autoUpdate="false" closable="true" />
<p:panelGrid id="pnlXXX">
<p:row>
<p:column>
<p:panelGrid>
<p:row>
<p:column><p:outputLabel for="valLbl" value="Value : " /></p:column>
<p:column>
<p:inputText id="valLbl" value="#{...}" required="true">
<p:ajax event="blur" update="olLicPlate" oncomplete="test();" />
</p:inputText>
</p:column>
<p:column><p:message for="valLbl" display="icon" /></p:column>
</p:row>
</p:panelGrid>
</p:column>
<p:column>
<p:outputPanel id="opt" style="display:none;">
<p:panelGrid id="pnlInfo">
...
</p:panelGrid>
</p:outputPanel>
</p:column>
</p:row>
<p:row>
<p:column colspan="2">
<p:panelGrid>
<p:row>
<p:column>
<p:commandButton id="btnAdd" value="Add"
action="#{...}" process="@form"
update="pnlXXX,prmMessage"></p:commandButton>
</p:column>
</p:row>
</p:panelGrid>
</p:column>
</p:row>
</p:panelGrid>
</h:form>
</p:tab>
...
答案 0 :(得分:4)
update
属性用于更新组件。如果您想在ajax调用完成后调用某些javascript函数,则必须使用oncomplete
onsuccessfull
或onerror
(您的选项):
在您的情况下,您尝试
<p:ajax event="blur" oncomplete="panelInfo.show();" />
<p:panel visible="false" widgetVar="panelInfo">
//content here
</p:panel>
您可以使用outputPanel,我已经使用ajax进行了测试:
<h:form id="description">
<script type="text/javascript">
function test(){
$(PrimeFaces.escapeClientId('description:opt')).css("display","block");
}
</script>
<p:outputPanel id="opt" style="display:none;">
<p:commandButton process="@this" value="test" actionListener="#{user.Test}"/>
</p:outputPanel>
<p:inputText id="licplate" value="zzzz" >
<p:ajax event="blur" oncomplete="test();" />
</p:inputText>
</h:form>