1

このコードは機能しますが、失敗すると予想されます。フォーカスを受け取るコンポーネントは であるため、その名前は (コンポーネント内のコンポーネントの埋め込みを反映するため)<p:inputText>であると予想されます。しかし、機能する唯一のネーミングは. 修飾名にIDを「挿入」しない PrimeFaces コンポーネントがいくつかあるようです。もしそうなら、それはどこに文書化されていますか?custForm:panelGrid:name-id<p:inputText><p:panelGrid>custForm:name-id

<h:form id="custForm" styleClass="jsfcrud_list_form">
<script type="text/javascript">
  function primeFacesId()
  {
        var original = 'custForm:name-id';
        var idToSetFocus = PrimeFaces.escapeClientId(original);
        $(idToSetFocus).focus();
  }
</script>
<script>
    jQuery(document).ready(function() {
        primeFacesId();
    });
</script>
<p:panelGrid columns="10" style="width: 98%;margin-left: 1%;margin-right: 1%;" id="panelGrid">
    <h:outputLabel for="name" value="Name:" />
    <p:inputText   id="name-id" value="#{customerLController.nameDBConstraint}" label="name" />
        (...)

[私は企業のファイアウォールの内側にいて、「SO には別のドメインからの外部 JavaScript が必要です」という理由で、数日間回答を受け入れることができません]

4

1 に答える 1

1

プレーンな JSF の場合、NamingContainerインターフェースを実装するすべてのコンポーネントは、ID をコンテナー内のすべてのコンポーネントのプレフィックスとして追加します。これは例えばh:formorh:dataTableではありませんh:panelGrid。詳細については、Mojarraの API ドキュメントを参照してください。

多くの Primefaces コンポーネントは標準の JSF コンポーネントから派生しているため、動作は似ていると思います。

更新: バージョン 3.2 の Primefaces ドキュメントでこれを見つけました。

JSF h:form、datatable、composite コンポーネントは名前付けコンテナーです。さらに、tabView、accordionPanel、dataTable、dataGrid、dataList、carousel、galleria、ring、sheet、および subTable は、NamingContainer を実装する PrimeFaces コンポーネントです。

少なくともこれは真実ではありません (そして、 panelgridp:panelGridの PF ショーケースの html ソースで確認できます)。

于 2012-07-27T10:49:20.780 に答える