2012-02-20 10 views
1

backing beanなしでinputTextareの値をオンザフライで取得できますか?backing beanなしでinputTextの値を即座に取得できますか?

<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()); 
    } 
} 

ダイアログ内の残りの文字を表示するために、私は、バッキングBeanに値を保存せずにテキストエリアの現在の値を持つメソッドを養うために持っています! この値はどのように取得できますか?

+0

あなたは '#{util.getCharactersRemaining(_var.note、160)}'を試しましたか? –

+1

あなたがここで何をしたいのか分かりません。リアルタイム通知が必要な場合は、inputTextAreaにカスタムjQueryキー押下ハンドラ関数を配置して、サーバー側のポストバックなしで即時の検証を実行する必要があります。それ以外の場合は、outputTextにバリデーションメッセージを表示させたい場合は、入力が最大長を超えないように、inputTextAreaで ''ファセットを使用する必要があります。 –

答えて

4

これは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> 

あなたは(このケースでは、私はからkeyupイベントにテキストを検証するためにpreffer)​​、keypresskeyupのjavascript機能hereについての詳細を取得することができます。また、コンポーネント全体を送信する代わりに、JavaScript関数を変更してコンポーネントのIDを送信することもできます(JSをinputTextコンポーネントやsimilarsで利用できるようになります)。

+1

+1ですが、この行はOPのdocument.getcomponentById( "frmMyPage:txtRemainingChars")では機能しません。この関数は 'document'には存在しませんが、JSF値' _var'これは 'c:forEach'または' ui:repeat'コンポーネントの中にあることを示唆しています。この場合、 'frmMyPage:txtRemainingChars'というIDは見つからないでしょう。 –

+1

@maple:リピーターコンポーネント内にダイアログを置くことも、非常に疑わしいデザインです。 – BalusC

+0

@maple_shaftありがとうございます、すでに編集済みです:)。 –

関連する問題