我有以下代码,无论我做什么,我的网页浏览器都不呈现任何提交按钮。
我正在和Glassfish一起使用eclipse。
问题还在于,当我快速尝试我的示例时,服务器有时会挂起并且浏览器处于等待模式几分钟而没有任何错误或任何错误。
有时它会让页面消失,而且效果很好。
为什么按钮没有显示而我的服务器不稳定?
<h:head><title>JSF 2: Using @ManagedBean</title>
<link href="./css/styles.css"
rel="stylesheet" type="text/css"/>
</h:head>
<h:body>
<div align="center">
<table class="title">
<tr><th>JSF 2: Using @ManagedBean</th></tr>
</table>
<p/>
<fieldset>
<legend>Random Results Page</legend>
<h:form>
Press button to get one of three possible results pages.
<br/>
<h:commandButton value="Go to Random Page" action="#{navigator.choosePage}" />
</h:form>
</fieldset>
</div>
package coreservlets;
import javax.faces.bean.*;
@ManagedBean
@ApplicationScoped
public class Navigator {
private String[] resultPages =
{ "page1", "page2", "page3" };
public String choosePage() {
return(RandomUtils.randomElement(resultPages));
}
}
答案 0 :(得分:2)
如果您 忘记声明h:
XML命名空间,导致<h:xxx>
标记无法识别,则会发生这种情况。这可以通过查看JSF源代码和生成的HTML输出(右键单击 - 浏览器中的查看源)来确认。
<html ... xmlns:h="http://java.sun.com/jsf/html">
您在浏览器地址栏中看到的 或请求网址与<url-pattern>
中映射的FacesServlet
的{{1}}不匹配,导致{ {1}}标记未解析。只需查看请求URL,web.xml
和生成的HTML输出即可确认。
<h:xxx>
或 web.xml
中的CSS以某种方式隐藏了它。这可以通过检查CSS文件和/或使用浏览器的开发人员工具集和/或检查生成的HTML输出来确认。
<url-pattern>*.xhtml</url-pattern>
无关具体问题,对特定用例使用应用程序作用域bean非常奇怪。它在所有会话中的所有用户之间共享。因此,如果该操作由世界其他地方的webapp用户X调用,则全世界的所有其他webapp用户都会看到它被反映出来。您是否宁愿使用请求或查看范围内的bean?