我正在尝试为家庭作业设计一个简单的java bean / xhtml设置。实现看起来很简单,但我无法让GlassFish从java bean中提取信息并将其显示在HTML中。
我编写了我的代码,然后创建了一个war文件并将其加载到GlassFish自动部署中。
这是index.xhtml:
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>System information</title>
</h:head>
<h:body>
<h:form>
<p>
This system's java version is #{properties.getJavaVersion}
</p>
<p>
This sytem's OS Name is #{properties.getOsName}
</p>
<p>
This System's OS version is #{properties.getOsVersion}
</p>
</h:form>
</h:body>
</html>
这是我的properties.java文件位于root / WEB-INF / classes / com / stansbury /
package com.stansbury;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ViewScoped
@ManagedBean
public class Properties {
public String javaVersion;
public String osName;
public String osVersion;
public String getJavaVersion() {
javaVersion = System.getProperty("java.version");
return javaVersion;
}
public String getOsName() {
osName = System.getProperty("os.name");
return osName;
}
public String getOsVersion() {
osVersion = System.getProperty("os.version");
return osVersion;
}
}
这是我的web.xml文件,位于root / WEB-INF /
中<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
</web-app>
最后但并非最不重要的是我的faces-config.xml文件位于root / META-INF:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
</faces-config>
我在屏幕上看到的是“系统的操作系统名称是”,然后是空白。其他两个值也是一样的。我创建了一个传统的应用程序来确保System.getProperties在我的计算机上运行。我也用不同的字符串初始化了properties.VALUES,只是为了确保。在过去的六个小时里,我一直在墙上敲我的头。再次,根据我研究过的不同教程,教科书和YouTube视频,这一切似乎都应该有意义。任何见解都会很棒!
答案 0 :(得分:1)
这是使用EL访问bean属性的错误方法:
This system's java version is #{properties.getJavaVersion}
应该是
This system's java version is #{properties.javaVersion}
由于getJavaVersion()
是getter,因此EL将查找javaVersion
属性。同样适用于其他领域。如果你有一个bean类:
public class Foo {
int bar;
public int getBar(){
return bar;
}
}
bar
属性应以#{bean.bar}
。
答案 1 :(得分:0)
您必须使用EL language才能访问bean字段。 这意味着要调用bean的getter,你必须使用getter方法,但没有标准前缀,即get / is。 因此你应该在xhtml中使用:
properties.javaVersion
properties.osName
properties.osVersion
请注意,xhtml不直接读取字段中的值,它只读取getters方法。