【问题标题】:Is there a way to use EL to get the current value of an h:inputText field?有没有办法使用 EL 来获取 h:inputText 字段的当前值?
【发布时间】:2010-11-24 11:43:46
【问题描述】:

我是 JSF 和 EL 的新手,想知道是否有办法使用 EL 来获取 h:inputText 字段的当前值。是我做错了,还是有可能?

谢谢, -本

【问题讨论】:

    标签: jsf seam el


    【解决方案1】:

    我真的不明白你在寻找什么......

    使用此代码:

    <h:form id="myForm">
        <h:inputText id="myInput" value="#{myBean.myValue}"/>
    

    在创建 HTML 页面时,输入字段的值将等于 bean myBeanmyValue 属性的值。

    如果用户更改了值,JSF会在提交表单时自动更新myBean.myValue的值。

    如果您需要在客户端获取输入的值,即使用Javascript,您需要执行以下代码:

    <script type="text/javascript">
        function getInputTextValue() {
            var valueOfInput = document.getElementById("myForm:myInput").value;
        }
    </script>
    

    请注意,您必须在 ID 前面加上包含输入的表单 ID ("**myForm:**myInput")。

    【讨论】:

    • 感谢您的彻底回复!基本上,我需要做的是获取输入并在服务器端验证它(为此有一个相当大的 bean 方法)。然后,如果验证失败,我想向用户发出警告对话,最好使用 javascript,因为这似乎是最简单的方法。现在我知道如何使用 javascript 获取字段的当前值,我将看看是否有一种方法可以调用 bean 方法并对返回值做一些事情。
    【解决方案2】:

    (根据您的评论)如果您想在服务器端验证它,那么您应该查看像 Richfaces 这样的 Ajax 库。

    然后您可以轻松地将 ajax 调用添加到您的输入字段

    <h:inputText id="myInput" value="#{myBean.myValue}">
       <a4j:support event="onchange" ajaxSingle="true"/>
    </h:inputText>
    

    当您更改文本时,Ajax 调用将在服务器端更新您的模型。如果你有一个验证器,那么你可以将它添加到 inputText 标签或使用支持标签上的 action 属性来调用另一个方法。

    【讨论】:

    • 哇!事实证明,我使用的是richfaces。我现在要试一试...
    • 这行得通!非常感谢您的帮助!但是,我确实有一个挑剔。如果我对会导致出现确认提示的字段进行更改(当用户单击“保存”按钮时会发生这种情况,因为需要一起验证许多字段),然后直接转到保存按钮,提示没有出现。但是,如果我单击其他字段(失去焦点,从而导致模型更新),然后单击保存,将显示确认提示。所以问题是,可以在保存按钮中以某种方式使用模糊吗? (我已经在使用onClick进行提示了)
    • 我不太确定你的意思。出现确认提示的原因是什么?
    • 绘制更好的画面:有几个字段,当用户单击“保存”按钮时,它们会一起验证。如果验证失败,则会出现确认提示。由于 ajax 用于在编辑服务器端的字段时更新它们,因此可以编辑字段并单击保存按钮(立即)而不用 ajax 更新服务器端值。但是,如果编辑一个字段和“选项卡”或其他任何内容来触发“onchange”事件,则一切正常。那么,有没有办法在单击保存按钮时强制进行 ajax 更新,只是为了确定?
    • 将保存按钮设为 a4j:commandButton 并将 eventsQueue 属性的值设置为与支持标签上的 eventsQueue 属性相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多