Primefaces、JavaScript、およびJSFは一緒にうまく動作しないか、私は何かを間違ってやっています
-
27-09-2019 - |
質問
ここで何かあるので、単純な
<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:form
、h:dataTable
のを付加します、等)UINamingContainer
成分自体のIDを持ちます。あなたはprependId
にfalse
属性を設定することで、これを無効にすることができます。
<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()
など。