请您介绍一下如何将xhtml页面中禁用或只读输入字段的值传递给使用请求的bean?
也许我错过了一些干净的解决方案? 提前感谢您的帮助。
答案 0 :(得分:0)
使用JavaScript禁用字段不起作用可能是因为您在发送表单之前未启用它们。未发送已禁用字段的值(请参阅input documentation)。
例如,以下代码运行良好:
<h:form>
<h:inputText id="disabledinput" styleClass="disabled"
value="#{someBean.property}"></h:inputText>
<h:outputScript>
$('.disabled').attr('disabled', 'disabled');
</h:outputScript>
<h:commandButton action="#{someBean.action}"
onclick="$('.disabled').removeAttr('disabled'); return true;"
value="Submit" />
</h:form>
onclick
属性执行JavaScript代码,该代码在发送表单之前启用输入。
如果您使用AJAX请求,则必须使用oncomplete
或类似方法恢复禁用状态。
此解决方案的问题是用户可以操纵该值。例如。她/他可以在浏览器中使用javascript控制台将输入更改为启用或使用某些工具(例如curl)来准备或篡改请求。因此,如果值很敏感或者用户永远不应该更改,请考虑storing the value in the session。
恕我直言,如果该值是由用户在前面的一个步骤中提供的,那么它并不重要。但是,如果计算了值(如总值或其他值),则不应依赖于其值,因为用户可以更改它。我个人更喜欢将值存储在服务器端(会话中或闪存中)。