我有一个名为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
,而是在页面中获取代码。
我使用以下网址导航到该网站:http://localhost:8080/Kwetter/index.xhtml?user=Dude
答案 0 :(得分:4)
未调用FacesServlet
时会发生这种情况。它是负责执行所有JSF和EL工作的人。您需要确保浏览器地址栏中显示的请求网址与FacesServlet
中定义的web.xml
的网址格式相匹配。如果您通过右键单击浏览器中的查看源来查看HTML源代码,那么您应该注意到所有JSF标记仍未解析,而不是生成HTML表示。
因此,如果您已将其映射到*.jsf
,那么您应该通过http://localhost:8080/Kwetter/index.jsf?user=Dude
打开它。
另一种方法是在FacesServlet
的网址格式上重新映射*.xhtml
这样您就不必担心虚拟URL。
无关,您使用<h:outputText>
的方式不对。摆脱它们。您最好也不要使用方法表达式语法,而只使用值表达式语法。
<div class="namebox">
<h:outputLabel value="User: #{userBean.name}" />
</div>
<div class="detailsbox">
Name: #{userBean.name}
Web: #{userBean.web}
Bio: #{userBean.bio}
</div>