相关疑难解决方法(0)

"绑定"属性如何在JSF中起作用?应该何时以及如何使用?

在JSF中有很多材料区分value属性和binding属性.

我对这两种方法如何彼此不同感兴趣.鉴于:

public class User {
    private String name;
    private UICommand link;

    // Getters and setters omitted.
}
Run Code Online (Sandbox Code Playgroud)
<h:form>
    <h:commandLink binding="#{user.link}" value="#{user.name}" />
</h:form>
Run Code Online (Sandbox Code Playgroud)

value指定属性时会发生什么变化.getter运行以返回bean 的name属性值User.该值将打印到HTML输出.

但我无法理解它是如何binding运作的.生成的HTML如何维护与bean link属性的绑定User

下面是手动美化和注释后生成的输出的相关部分(注意id j_id_jsp_1847466274_1是自动生成的,并且有两个隐藏的输入小部件).我正在使用Sun的JSF RI 1.2版.

<form action="/TestJSF/main.jsf" enctype="application/x-www-form-urlencoded"
    id="j_id_jsp_1847466274_1" method="post"  name="j_id_jsp_1847466274_1">
    <input name="j_id_jsp_1847466274_1" type="hidden" value="j_id_jsp_1847466274_1">
    <a href="#" onclick="...">Name</a>
    <input autocomplete="off" id="javax.faces.ViewState" name="javax.faces.ViewState"
        type="hidden" value="-908991273579182886:-7278326187282654551">
</form>
Run Code Online (Sandbox Code Playgroud)

在哪里binding存放在这里?

jsf binding components jsf-2

74
推荐指数
1
解决办法
10万
查看次数

日期范围验证

我想比较两个日期(StartDate和EndDate)并检查一个日期是否在另一个日期之前.最简单的解决方案是在支持bean上执行此操作并将方法"短路".

但是,此验证不会与其他表单验证同时发生.例如,如果我有另一个需要验证的字段(除了日期)并且输入无效,我将只收到该特定字段的消息.只有当其他字段有效时,才会根据辅助bean获取日期验证.

有人有解决方案吗?

validation jsf date-range

14
推荐指数
2
解决办法
3万
查看次数

PrimeFaces日历接受无效日期作为输入

我遇到的问题是PrimesFaces 3.4.1日历.当使用通过按钮或输入字段焦点激活的弹出日期选择器时,您只能选择工作正常,快乐日子的有效日期!

当您手动将日期添加到输入字段时,如果您添加一个无效的日期,PrimeFaces日历组件会将其转换为有效日期然后发送它,这意味着后端验证是不行的.以下一些有趣的翻译:

  • 30/02/2012成为2/6/2014
  • 322/05/2012成为5/10/2038
  • 2012年1月14日成为2012年4月1日

要重现这种疯狂,请看看PrimeFaces日历展示.

我已经看到使用该readOnlyInput='true'属性的解决方案,但这似乎只是防止在字段中输入字母而不是数字或斜杠.以下是我实施的日历的一个实例:

<p:calendar id="fldDateOfBirth"
            value="#{pc_CreateUser.user.dateOfBirth}"
            binding="#{pc_CreateUser.dobComp}"
            navigator="true"
            pattern="dd/MM/yyyy"
            maxlength="10"
            yearRange="-100"
            validator="#{pc_CreateUser.validateDOB}"
            title="#{msg.user_date_format_default_tip}"
            converterMessage="#{msg.user_error_dob_invalid}"
            readOnlyInput="true"
            showOn="button" />
Run Code Online (Sandbox Code Playgroud)

解决方案明智我对任何建议持开放态度:

  1. 这是PrimeFaces中的常见问题吗?有没有我可以用来解决它的技巧?
  2. 我可以使用JavaScript在发送之前验证日期还是完全阻止所有用户输入?
  3. 还有什么别的我没有想到的!

在此先感谢,这已经引起了我好几周的问题!

java validation jsf calendar primefaces

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

jsf ×3

validation ×2

binding ×1

calendar ×1

components ×1

date-range ×1

java ×1

jsf-2 ×1

primefaces ×1