【问题标题】:get value of inputText on the fly without backing bean?在没有支持bean的情况下即时获取inputText的值?
【发布时间】:2012-02-20 19:06:52
【问题描述】:

我可以在没有支持 bean 的情况下即时获取 inputTextare 的值吗?

<p:dialog>
<p:inputTextarea rows="5" cols="30" value="#{_var.note}" />
<h:outputText id="remaining" value="#{util.getCharactersRemaining("varibale of textarea", 160)} characters left" />



public class UtilFacade {
    public int getCharactersRemaining(String value, int maxLength) {
        log.info("length: " + value.length());
        return (maxLength - value.length());
    }
}

为了在对话框中显示剩余的字符,我必须在 Textarea 中为方法提供当前值,而不将值保存到支持 bean! 我怎样才能得到这个值?

【问题讨论】:

  • 你试过#{util.getCharactersRemaining(_var.note, 160)}吗?
  • 不太确定你想要什么。如果您想要实时通知,那么您需要在 inputTextArea 上放置一个自定义的 jQuery 按键处理函数来执行即时验证,而无需服务器端回发。否则,如果您希望 outputText 显示验证消息,那么您应该在 inputTextArea 上使用&lt;f:validateLength&gt; facet 以确保您的输入不超过最大长度。

标签: java html jsf


【解决方案1】:

您可以使用 JavaScript 方法执行此操作(无需转到服务器)。这是一个示例:

<script type="text/javascript">
    function getRemainingChars(textArea, maxLength) {
        var actualText = textArea.value;
        if (actualText.length > maxLength) {
            textArea.value = actualText.substring(0, maxLength);
        }
        var remainingChars = (maxLength > actualText.length) ? maxLength - actualText.length : 0;
        document.getElementById("frmMyPage:txtRemainingChars").value = remainingChars;
    }
</script>
<h:form id="frmMyPage">
<h:inputTextArea id="txtTextArea" cols="50" rows="10" onkeyup="getRemainingChars(this, 500);" />
<br />
<h:outputText id="txtRemainingChars" />
</h:form>

您可以获取有关keydownkeypresskeyup javascript 函数here 的更多详细信息(在这种情况下,我更愿意验证keyup 事件中的文本)。您还可以修改 JavaScript 函数并发送组件的 id 而不是发送整个组件(这将使 JS 可用于 inputText 组件和类似组件)。

【讨论】:

  • +1 但我认为这条线不适用于 OP document.getcomponentById("frmMyPage:txtRemainingChars") 尽管document 上不存在此功能,但使用 JSF 值 _var 表明这是在 c:forEachui:repeat 组件内,在这种情况下,可能找不到 id frmMyPage:txtRemainingChars
  • @maple:在转发器组件中包含对话框也是非常值得怀疑的设计。
猜你喜欢
  • 1970-01-01
  • 2012-09-23
  • 2013-03-23
  • 2013-12-30
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
相关资源
最近更新 更多