【发布时间】:2013-01-03 03:28:07
【问题描述】:
我有一个名为index.xhtml 的页面,我在其中使用来自 bean 类的变量来填充页面的信息。但是当我启动文件时,它看起来好像没有使用 bean。
我的index.xhtml:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<script language="JavaScript" type="text/javascript" src="resources/tab-panel.js"></script>
<link rel="stylesheet" href="resources/style.css" type="text/css" />
<title>Tweetpage of #{userBean.name}</title>
</h:head>
<f:metadata>
<f:viewParam name="user" value="#{userBean.name}" />
<f:event type="preRenderView" listener="#{userBean.init()}" />
</f:metadata>
<h:body onload="bodyOnLoad()" onResize="raisePanel(currentMenuIndex)">
<div class="loginbox">
<h:link value="Login" outcome="user.xhtml" />
</div>
<div class="namebox">
<h:outputLabel>User: #{userBean.name} </h:outputLabel>
</div>
<div class="detailsbox">
<h:outputText>Name: #{userBean.getName()} </h:outputText>
<h:outputText>Web: #{userBean.getWeb()} </h:outputText>
<h:outputText>Bio: #{userBean.getBio()} </h:outputText>
</div>
我的UserBean.java:
@ManagedBean
@SessionScoped
public class UserBean implements Serializable {
@Inject @Named(value = "userService")
private UserService service;
private String name;
private User user;
public UserBean() {
}
我的网页如下所示:
User: #{userBean.name}
Name: #{userBean.getName()}
如您所见,它没有说null 或Dude,而是我在页面中获得了代码。
我使用以下 URL 导航到该站点:http://localhost:8080/Kwetter/index.xhtml?user=Dude
【问题讨论】:
-
你在初始化 bean 吗?看看这个链接:en.wikipedia.org/wiki/JavaBeans
-
如果您刚开始接触 JSF,我建议您浏览一下我们的 JSF wiki 页面。将您放置在问题上的
[jsf]标记悬停,直到出现黑色弹出框,然后单击其中的info 链接。有一个 Hello World 和一些理智教程的链接。 -
嗯..似曾相识? stackoverflow.com/questions/12787325/… 2 个月前您遇到过完全相同的问题。您显然使用的是
/faces/*映射而不是*.xhtml。 -
我知道我以前遇到过这个问题,哈哈。我搜索了我提出的问题,但找不到。这次的主要问题是我完全丢失了
web.xml文件。 NetBeans 不会自动生成它,所以我什至没有考虑将它映射到文件中。 -
给你的答案提供了一些有用的链接和信息。 JSF 的 wiki 页面让我明白了一些事情。谢谢!
标签: java jsf javabeans facelets