1

我在数据表中有一个 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 {
    // ...
}

确保您不在 getter 中执行任何业务逻辑。所以他们都应该是这样的

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

是的,只是一个,仅此return propertyName;而已。如果需要,请在其他地方进行。

两者都将确保在表单提交请求期间的电影列表与在显示列表的请求期间完全相同。通过这种方式,JSF 可以找到负责该操作的命令链接并相应地执行它。

也可以看看:

于 2011-03-03T04:25:00.823 回答