Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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 设置与日历输入相关的输入字段值_Java_Jsf_Primefaces_Binding_Calendar - Fatal编程技术网

Java 设置与日历输入相关的输入字段值

Java 设置与日历输入相关的输入字段值,java,jsf,primefaces,binding,calendar,Java,Jsf,Primefaces,Binding,Calendar,我使用的是Primefaces,我有一个输入字段,其值必须根据输入日期生成,问题是可以通过单击日历或键入来选择日期,如果以第一种方式完成,则一切正常,但如果通过写入完成,则支持bean中UIInput的值为空。我不知道为什么绑定属性不能正常工作,或者我做错了什么 <p:calendar id="fechaContable" value="#{movimientoBean.movimientoCab.fechaContable}" pattern

我使用的是Primefaces,我有一个输入字段,其值必须根据输入日期生成,问题是可以通过单击日历或键入来选择日期,如果以第一种方式完成,则一切正常,但如果通过写入完成,则支持bean中UIInput的值为空。我不知道为什么绑定属性不能正常工作,或者我做错了什么

<p:calendar id="fechaContable"   
                    value="#{movimientoBean.movimientoCab.fechaContable}" pattern="dd/MM/yyyy"  binding="#{movimientoBean.fecha}" required="true"   
                    requiredMessage="Se necesita fechaContable">  
            <p:ajax event="dateSelect" oncomplete="document.getElementById('anadirForm:numeroAsiento').focus()"/>

</p:calendar>

<p:inputText id="numeroAsiento"   
                      binding="#{movimientoBean.numeroAsiento}" value="#{movimientoBean.movimientoCab.numeroAsiento}" required="false">
        <f:ajax event="focus" render=":anadirForm:numeroAsiento" listener="#{movimientoBean.numAsiento}"/>
</p:inputText>
当调用dateSelect时,UIInput fecha的值是正确的,但当写入日期时,它是空的

对不起,可能有语法或拼写错误

编辑(解决方案):

以下是代码,以防有人需要,感谢Laabidi Raissi的帮助和信息:

<p:calendar id="fechaContable"   
                    value="#{movimientoBean.movimientoCab.fechaContable}" pattern="dd/MM/yyyy" required="true"   
                    requiredMessage="Se necesita fechaContable">  

            <p:ajax event="dateSelect" update=":anadirForm:numeroAsiento" listener="#{movimientoBean.numAsiento}" oncomplete="document.getElementById('anadirForm:numeroAsiento').focus()"/>
            <p:ajax event="change" update=":anadirForm:numeroAsiento" listener="#{movimientoBean.numAsiento}" oncomplete="document.getElementById('anadirForm:numeroAsiento').focus()"/>
</p:calendar>


<p:inputText id="numeroAsiento"   
                       value="#{movimientoBean.movimientoCab.numeroAsiento}" required="false">

</p:inputText>

您应该为
更改添加ajax事件:

<p:ajax event="change" oncomplete="document.getElementById('anadirForm:numeroAsiento').focus()"/>

与这个问题无关,我认为混合
p:ajax
f:ajax
不是一个好主意。
此外,除非有充分的理由,否则不应该在托管bean中使用
UIComponent
s
请参阅

Using event=“change”我仍然无法在bean中获取值,除非通过单击日历而不是键入来选择它。只是一个问题,当您单击输入外部(或单击选项卡)时,它不起作用?如果我使用
进行日历绑定,您可以在托管bean中创建一个日期属性,并且有
p:calendar
的值,该值指向正在执行的itAjax,但键入时fecha的值为null。
<p:ajax event="change" oncomplete="document.getElementById('anadirForm:numeroAsiento').focus()"/>