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



我使用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>

后台bean

@ManagedBean
@ViewScoped
public class MovimientoBean implements Serializable{
......
private transient UIInput numeroAsiento;
private transient UIInput fecha;
......
public void numAsiento(){
.....
try {
        Date date = dateFormat.parse(fecha.getValue().toString());
        fechaContable = sdf.format(date);
    }catch (ParseException e){
    }
}

当dateSelect被调用时,UIInput fecha的值是正确的,但是当date被写入时,它是空的。

很抱歉可能有语法或拼写错误

编辑(解决方案):

这里是代码工作,以防有人需要它,感谢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>

您应该为change添加一个ajax事件:

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

与问题无关,我认为混合p:ajaxf:ajax不是一个很好的主意。
而且,除非有充分的理由,否则不应该在托管bean中使用UIComponent s。
有关更多解释,请参阅BalusC的回答

相关内容

  • 没有找到相关文章

最新更新