相关疑难解决方法(0)

JSF不支持跨领域验证,是否有解决方法?

JSF 2.0只允许您验证一个字段的输入,例如检查它是否是一定长度.它不允许您有一个表单,"输入城市和州,或只输入邮政编码".

你是怎么得到这个的?我只对涉及JSF验证阶段的答案感兴趣.我对管理Bean中的验证逻辑不感兴趣.

validation jsf jsf-2

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

jsf一次验证两个字段

我可以用一个验证器验证两个相互依赖的字段吗?

     <h:form>
            <h:inputText value="#{logRegBean.person.name}" >
                <f:validator validatorId="loginCorrectValidator" />
            </h:inputText>
            <h:inputSecret value="#{logRegBean.person.password}" />
            <h:commandButton action="#{logRegBean.login}" />
        </h:form>
Run Code Online (Sandbox Code Playgroud)

我想在数据库中搜索用户,如果有用户,我将测试密码(在db和输入中)是否匹配.但是如何在一个验证器中访问密码字段呢?我试图通过评估其他字段中的int值createValueExpression(),但看起来我无法在那段时间访问该值,因为我总是得到空字符串.

validation jsf

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

应用请求值和更新模型值之间的差异

我常常对这两个阶段产生怀疑.以下是我的理解:

  1. 应用请求值

    • 在此阶段,提交的值来自请求参数.然后将请求值设置到辅助bean中,即设置为组件UIInput
  2. 更新模型值

    • 在此阶段,已处理的值从backing bean(UIInput)传输到托管bean.(这是我们自定义的JSF bean).

我在想我的理解是正确的.但是,阅读一些文章让我感到困惑.我想在这两个阶段让我更清楚.请澄清我.

lifecycle jsf

9
推荐指数
1
解决办法
7928
查看次数

什么时候在 UIComponent 上调用 setValue 和 setSubmittedValue?

如果我正确地将 BalusC 2006 年伟大的帖子http://balusc.blogspot.ch/2006/09/debug-jsf-lifecycle.html 中包含的信息与 Optimus Prime 更早的帖子http://cagataycivici.wordpress.com/2005 /12/28/jsf_component_s_value_local/我得到以下信息:

我的理解:

  1. 在 APPLY_REQUEST_VALUES 阶段,
    • 输入值设置为 UI 组件的 submitValue 属性(例如inputComponent.setSubmittedValue ("test"))。
  2. 在 PROCESS_VALIDATIONS 阶段,
    • 从 submitValue 属性(大概是inputComponent.getSubmittedValue ())中读取相同的值,并在必要时用于转换。
    • 如果转换成功或跳过,则结果被设定为分量的值属性(例如inputComponent。的setValue(“测试”))。
    • 此外,submittedValue 会立即再次被擦除(例如inputComponent.setSubmittedValue (null))
    • (转换后的)值是从 UI 组件(大概是 inputComponent.getValue ())的 value 属性中读取并验证的。
    • 在验证后,支持bean /模型的存储的值被读出(例如为myBean。getInputValue())中,用新转换和验证值进行比较。如果不同,将调用 valueChangeListener 方法。
  3. 在 UPDATE_MODEL_VALUES 阶段,
    • 新转换的和验证值被最终存储在背衬bean的属性字段(例如为myBean。setInputValue(“测试”))。

问题:

  • 这样对吗?
  • 要完全理解 POST 和在支持 bean 中保存输入值之间发生的事情,是否缺少一些东西?
  • 输入组件上的immediate =“true”,我们只是将这些事件转移到APPLY_REQUEST_VALUES阶段,还是我们改变的不仅仅是事件的时间/顺序?

lifecycle jsf components

5
推荐指数
1
解决办法
5103
查看次数

验证成功后,UIInput#getValue()和getLocalValue()返回不同的值

在这里,它被作者提及。

如果[COMPONENT]标记为有效,则两者都返回相同的值,即提交,转换和验证的值。

考虑一个非常简单的代码段:

<h:form>
            <h:inputText value="#{bean.inputValue}" 
                         binding="#{bean.htmlInputText}"      
                         validator="nameValidator" /><br/>
            <h:commandButton value="Submit" action="#{bean.action}" />
</h:form>
Run Code Online (Sandbox Code Playgroud)

@RequestScoped支持豆-

public Integer inputValue = 5;
public HtmlInputText htmlInputText;

public void action(){
        System.out.println(" getSubmittedValue() "+htmlInputText.getSubmittedValue());
        System.out.println(" isLocalValueSet() "+ htmlInputText.isLocalValueSet());
        System.out.println(" getValue() " + htmlInputText.getValue());
        System.out.println(" getLocalValue() " +htmlInputText.getLocalValue());
}
Run Code Online (Sandbox Code Playgroud)

按下提交按钮后,输出为-

 getSubmittedValue() null    AS EXPECTED, since Conversion & Validation succeded
 isLocalValueSet() false
 getValue() 25               AS EXPECTED, since Conversion & Validation succeded
 getLocalValue() null        Why NULL? IN WHAT CONTEXT HAS THE AUTHOR SAID SO
Run Code Online (Sandbox Code Playgroud)

validation lifecycle jsf

1
推荐指数
1
解决办法
305
查看次数

标签 统计

jsf ×5

lifecycle ×3

validation ×3

components ×1

jsf-2 ×1