Primefaces、JavaScript、およびJSFは一緒にうまく動作しないか、私は何かを間違ってやっています

StackOverflow https://stackoverflow.com/questions/4038456

質問

ここで何かあるので、単純な

<p:commandLink value="Tom" onclick="document.getElementById('tom').focus()"/><br/>
<input id="tom"/>
uはトム、テキストボックスのGETフォーカスをクリックし、

。グレート、今、この

を試します
<p:commandLink value="Tom" onclick="document.getElementById('tom').focus()"/><br/>
<h:inputText id="tom"/> <br/>

私は何もクリックしないときに起こる、私は放火犯をチェックし、私が見る

document.getElementById("tom") is null
私はjQueryの$('#tom').focus()を使用しようとすると、

、何も、何もエラーが起こりませんが、フォーカスのいずれかを取得できませんでした。私は放火犯

から見たときにこれは(これはサーバからの応答であるかどうかわからない)responseです
<?xml version="1.0" encoding="utf-8"?>
<partial-response>
    <changes>
       <update id="javax.faces.ViewState"><![CDATA[455334589763307998:-2971181471269134244]]></update>
    </changes>
    <extension primefacesCallbackParam="validationFailed">{"validationFailed":false}</extension>
</partial-response>
<時間>
役に立ちましたか?

解決

ではJSFは、要素のIDは、それらを含むフォームのIDで接頭辞(より一般的には、そのIDは、すべての親コンポーネントのIDが付けされる実装<のhref = "のhttp://ダウンロード.oracle.com /のJavaEE / 5 / API /のjavax /顔/コンポーネント/ NamingContainer.html」REL = "nofollowを"> NamingContainer のインタフェース)。たとえばます:

<h:form id="myForm">
    <h:inputText id="tom" .../>

は、次のHTMLコードを生成します。

<input id="myForm:tom" ...>

あなたは<input> IDとないmyForm:tomのID自体を使用する必要がありますtomにアクセスします。

jQueryを使って、あなたが使用する必要があります$("myForm\:tom").focus();

他のヒント

JSFはIDの UINamingContainer の子供(h:formh:dataTableのを付加します、等)UINamingContainer成分自体のIDを持ちます。あなたはprependIdfalse属性を設定することで、これを無効にすることができます。

<h:form prependId="false">

あなただけのもう動的同じビュー内の別の場所コードの同じ部分を含めることはできません。これを無効にする場合は、このことを覚えておいてください。

とPrimefaces2と、uがこのような$の代わりにjQueryのを使用する必要があります:

 <h:commandButton id="dome" value="提交" action="#{uInfo.doMe}">
  <f:ajax execute="@form" render="@form"/>
 </h:commandButton>
 ...
 <script type="text/javascript">
 function refresh() {
  jQuery("input#dome").click();
 }
 var t=setInterval('refresh()', 5000);
 </script>

あなたはこのように、そのJSFタグにid属性を与える必要があります

<h:inputText id="tom" />

それ以外の場合は、idと表示されませんし、そう見つけるために何id="tom"要素は存在しません。

DOはprimefacesもあなたはjavascriptオブジェクトにコンポーネントを結び付けるために、属性widgetvarを使用してみましょうということを忘れないで。

そう、たとえばます:

<p:inputText widgetvar="tom" id="tom" />

、あなたのjavascriptのコードまたはあなたができるいくつかのjavascriptのコールバックでます:

tom.disable()

など。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top