Java 在没有支持bean的情况下动态获取inputText的值?

Java 在没有支持bean的情况下动态获取inputText的值?,java,html,jsf,Java,Html,Jsf,我可以在没有支持bean的情况下动态获取InputExtare的值吗 <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

我可以在没有支持bean的情况下动态获取InputExtare的值吗

<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!
如何获取该值?

您可以使用JavaScript方法来实现,无需转到服务器。以下是一个示例:

函数getRemainingCharstextArea,maxLength{ var actualText=textArea.value; 如果actualText.length>maxLength{ textArea.value=actualText.substring0,maxLength; } var remainingChars=maxLength>actualText.length?maxLength-actualText.length:0; document.getElementByIdfrmMyPage:txtRemainingChars.value=remainingChars; }
您可以获得有关keydown、keypress和keyup javascript函数的更多详细信息,在本例中,我将预先提供验证keyup事件上的文本的信息。您还可以修改JavaScript函数并发送组件的id,而不是发送整个组件。这将使JS可用于inputText组件和类似组件。

您可以使用JavaScript方法完成此操作,无需转到服务器。以下是一个示例:

函数getRemainingCharstextArea,maxLength{ var actualText=textArea.value; 如果actualText.length>maxLength{ textArea.value=actualText.substring0,maxLength; } var remainingChars=maxLength>actualText.length?maxLength-actualText.length:0; document.getElementByIdfrmMyPage:txtRemainingChars.value=remainingChars; }
您可以获得有关keydown、keypress和keyup javascript函数的更多详细信息,在本例中,我将预先提供验证keyup事件上的文本的信息。此外,您还可以修改JavaScript函数并发送组件的id,而不是发送整个组件。这将使JS可用于inputText组件和类似组件。

您是否尝试了{util.getCharactersMaining_var.note,160}?不太确定您想要在这里做什么。如果需要实时通知,则需要在InputExtArea上放置一个自定义jQuery keypress处理程序函数,以便在不进行服务器端回发的情况下执行即时验证。否则,如果希望outputText显示验证消息,则应在InputExtArea上使用一个方面,以确保输入不超过最大长度。是否尝试了{util.getCharactersMaining_var.note,160}?不确定此处要的是什么。如果需要实时通知,则需要在InputExtArea上放置一个自定义jQuery keypress处理程序函数,以便在不进行服务器端回发的情况下执行即时验证。否则,如果您希望outputText显示验证消息,则应在InputExtArea上使用一个方面,以确保您的输入不超过最大长度。+1但我认为这一行不适用于OP文档。getcomponentByIdfrmMyPage:txtRemainingChars,尽管文档上不存在此函数,JSF值的使用表明它位于c:forEach或ui:repeat组件中,在这种情况下,很可能找不到id frmMyPage:txtRemainingChars。@maple:在中继器组件中有一个对话框也是非常值得怀疑的设计。+1但我认为这一行对OP文档不起作用。getcomponentByIdfrmMyPage:txtRemainingChars,尽管文档中不存在此函数,JSF值的使用表明这是在c:forEach或ui:repeat组件中,在这种情况下,很可能找不到id frmMyPage:txtRemainingChars。@maple:在repeater组件中有一个对话框也是非常值得怀疑的设计。