天数计算方法(使用ZK和MVVM)

天数计算方法(使用ZK和MVVM),mvvm,datepicker,frameworks,zk,Mvvm,Datepicker,Frameworks,Zk,好吧,好吧,如果有人感兴趣的话,我会一步一步地把我对ZK框架和MVVM模式的所有疑问联系在一系列简单的问题上: 现在,所有的数据都已正确绑定,我决定在表单的日期上玩一玩。因此,当我选择一个日期时,它通过一个操作计算出天数,并显示在另一个文本框中,下面是代码: .zul文件 <datebox id="" format="medium" onCreate="" value="@bind(vm.fechaIngreso)" width="100%" onSelect="@command

好吧,好吧,如果有人感兴趣的话,我会一步一步地把我对ZK框架和MVVM模式的所有疑问联系在一系列简单的问题上:

现在,所有的数据都已正确绑定,我决定在表单的日期上玩一玩。因此,当我选择一个日期时,它通过一个操作计算出天数,并显示在另一个文本框中,下面是代码:

.zul文件

 <datebox id="" format="medium" onCreate="" value="@bind(vm.fechaIngreso)" width="100%" 
 onSelect="@command('calcularDias')" mold="rounded" readonly="true" constraint="no empty, no future"
 disabled="@load(empty vm.camaPaciente)"/>
其中“hoy”=今天日期,getFechaRegistro=注册日期,它假设必须在另一个文本框中计算天数,但它不起作用。可能是绑定问题或计算问题。我感谢任何解决我问题的建议。多谢各位

  • 我想您的文本框绑定到了
    diasEstancia
    属性?然后 您应该让命令通知该值的更改:
    @NotifyChange({“diasEstancia”})

  • 您没有使用属性
    fechaIngreso
    (它绑定到您的日期框)来计算日差,但您使用的是
    this.getFechaRegistro()
    ,就我从发布的代码中所看到的,它没有改变。因此,
    diasEstancia
    中的值永远不会改变(在一天内)


  • 哦,我明白了,我忘了绑定“diasEstancia”(作为int值的天数)属性,是的,你是对的,我声明了两个与日期相关的变量,我调用了错误的变量,呵呵,我正在寻找方法的错误,这又是一个绑定错误。谢谢你的回答flo!
    @Command
    @NotifyChange({"fechaIngreso"})
    public void calcularDias(){
      long milisegundosPorDia = 24 * 60 * 60 * 1000;
      java.util.Date hoy = new Date();
      long tmp = (hoy.getTime() - this.getFechaRegistro().getTime())/milisegundosPorDia;
      this.setDiasEstancia((int)tmp);
    }