我通过JSF创建了一个页面,用户可以在表单中输入一些值。如果用户输入正常,他可以单击提交按钮,使用新值更新模型。
我想要实现的目标是:我希望每次都触发输入验证,用户在输入字段中输入一个符号。但此时,模型应 NOT 更新。只有在用户单击提交按钮时才应更新模型。我想要这种行为以获得更好的使用体验。用户应具备以下能力:按下浏览器中的后退按钮,他的更改不会附加到模型。此外,我希望用户在输入时看到,如果他输入一些废话。
目前我的JSF-File看起来像这样:
<h:inputText
required="true"
requiredMessage="Please enter a value."
id="input_value" value="#{myBean.myValue}"
styleClass="input"
validatorMessage="Please enter a value." >
<f:ajax
event="keyup"
execute="input_value"
render="input_value"/>
</h:inputText>
每次用户在输入字段中输入符号时,都会触发验证。但它也更新了模型。那不是我想要的。
答案 0 :(得分:1)
这是不可能的。至少不是没有攻击JSF impl。
幸运的是,你提到了XY-problem的X,所以可以合理地回答:
我想要这种行为以获得更好的使用体验。用户应具备以下能力:按下浏览器中的后退按钮,他的更改未附加到模型
要解决这个问题,只需指示浏览器永远不要缓存动态页面。详细信息可以在此Q&amp; A:Avoid back button on JSF web application中找到。您还需要确保为其拥有的数据选择正确的bean范围。即不要将视图范围数据放在会话范围的bean中。那些表单bean必须至多是视图范围。另请参阅How to choose the right bean scope?