1

dataTable 内に commandLink があります。dataTable は、ajax 呼び出しによって設定されます。しかし、私の commandLink は正しい場所を指していません。これがコードです。

<h:form id="form1">
    <h:outputLabel value="Search Movie: " /> <h:inputText value="#{movieBean.movie.name}" id="inputName">
        <f:ajax render="dTbl" listener="#{movieBean.searchMovie}" execute="inputName" />
        </h:inputText><br/>
    <h:commandButton type="reset" value="Clear" />
    <h:dataTable id="dTbl" value="#{movieBean.movies}" var="movies" rendered="#">
        <h:column>
            <f:facet name="header">  
                <h:outputText value="Name" />  
            </f:facet>
            <h:commandLink action="#{movieBean.loadMovieDetails}">
                <h:outputText value="#{movies.name}" />
            </h:commandLink>
        </h:column>
        <h:column>
            <f:facet name="header">  
                <h:outputText value="ISBN" />  
            </f:facet>   
            <h:outputText value="#{movies.isbn}"></h:outputText>
        </h:column>
        <h:column>
            <f:facet name="header">  
                <h:outputText value="Release Date" />  
            </f:facet>   
            <h:outputText value="#{movies.releaseDate}"></h:outputText>
        </h:column>
        <h:column>
            <f:facet name="header">  
                <h:outputText value="Star Rating" />  
            </f:facet>   
            <h:outputText value="#{movies.starRating}"></h:outputText>
        </h:column>
    </h:dataTable>
    </h:form>   

どんな助けでも本当に感謝しています。ありがとうイマド

4

1 に答える 1

1

Bean をビュー スコープに入れます。

@ManagedBean
@ViewScoped
public class MovieBean {
    // ...
}

また、ゲッターでビジネス ロジックを実行しないようにしてください。だから、彼らはすべてこのように見えるはずです

public List<Movie> getMovies() {
    return movies;
}

はい、ただそれだけreturn propertyName;です。必要な場合は、別の場所で行います。

どちらも、リストを表示したリクエスト中とフォーム送信リクエスト中の映画のリストがまったく同じであることを保証します。このようにして、JSF はアクションを担当するコマンドリンクを見つけ、それに応じて実行できます。

以下も参照してください。

于 2011-03-03T04:25:00.823 に答える