繁体   English   中英

JSF2.0初学者遇到来自bean的参数和属性的麻烦

[英]JSF2.0 Beginner trouble with parameters and properties from bean

今天晚上,我第一次开始使用JSF 2.0,并且设法将一个返回电影列表的托管bean和一个xhtml页面拼凑在一起,该页面可以显示从中返回的电影表托管bean。

继续进行之后,我试图在数据表中放置一个链接,以创建一个单独的xhtml页面的视图,该页面仅显示单个电影的详细信息。 但是我似乎在使用新的xhtml页面中的film bean时遇到麻烦。

以下是主要列表xhtml页面中的代码:

<h:head>
    <title>Facelet Title</title>
</h:head>
<h:body>
    <h:form>
        <h:dataTable value="#{filmResourceBean.allFilms}" var="film">
            <h:column><f:facet name="header">Title</f:facet>
                <h:commandLink value="#{film.title}" action="film.xhtml" />
                <f:param name="id" value="#{film.imdbId}" />
            </h:column>
            <h:column><f:facet name="header">Plot</f:facet>#{film.plot}</h:column>
        </h:dataTable>
    </h:form>
</h:body>

这是支持此页面的托管Bean中的代码:

@ManagedBean(name="filmResourceBean")
@SessionScoped
public class FilmResource implements Serializable {

    public List<Film> getAllFilms() {
    // This just returns a basic list of films, its not needed here to save space...
    }

    public Film getFilm(String id) {
    // THis just returns a film object that matches the given id, again to save space its not needed
    }
}

现在,我尝试重新创建的想法是,当用户按下主列表xhtml页面中的表中的链接时,他们被重定向到新的xhtml页面,该页面应获取应通过getFilm(String id )方法在托管bean中。

这就是我目前所拥有的,仅打印出电影对象的基本toString(),例如:org.jmcdonnell.mavenproject1.Film@34c3eb7c

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Facelet Title</title>
    </h:head >
    <h:body >
        <h:outputText value="#{filmResourceBean.getFilm(id)}"></h:outputText>
    </h:body>
</html>

我想在这里简单地向初学者展示的是电影的标题,并且我尝试了#{filmResourceBean.getFilm(id).title}#{filmResourceBean.getFilm(id)}.title不同组合,等等,但是它们都不起作用,并且是JSF的新手,我不确定自己在哪里寻找或寻找什么。 我在网上找到的教程都没有给我展示执行此操作的方法,或者至少没有给我提供我所发现的方法。 有人可以指出我正确的方向吗?

在几乎正确的地方,您需要使用#{filmResourceBean.getFilm(id).title}但是问题出在参数id 当使用f:param打开视图时,它将参数作为GET参数传递。 要在目标视图中使用它,您需要使用param['key']因此在您的情况下,最终代码应为:

#{filmResourceBean.getFilm(param['id']).title}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM