0

我有以下代码,无论我做什么,我的网络浏览器都不会呈现任何提交按钮。

我正在使用 Eclipse 和 Glassfish。

问题还在于,当我快速尝试我的示例时,服务器有时会挂起,浏览器处于等待模式几分钟,没有任何错误或任何东西。

有时它确实会放弃页面,并且效果很好。

为什么没有显示按钮并且我的服务器如此不稳定?

<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));
  }
}
4

1 回答 1

2

如果您忘记声明XML 命名空间,就会发生这种情况,从而导致无法识别标签。这可以通过查看 JSF 源代码和生成的 HTML 输出来确认(右键单击 -在浏览器中查看源代码)。h:<h:xxx>

<html ... xmlns:h="http://java.sun.com/jsf/html">

或者您在浏览器地址栏中看到的请求 URL 与映射中<url-pattern>的不匹配,导致标签未解析。这可以通过查看请求 URL和生成的 HTML 输出来确认。FacesServletweb.xml<h:xxx>web.xml

<url-pattern>*.xhtml</url-pattern>

或者其中的 CSSstyles.css以某种方式隐藏了它。这可以通过检查 CSS 文件和/或使用浏览器的开发人员工具集和/或检查生成的 HTML 输出来确认。

input[type=submit] {
    display: none; 
}

也可以看看:


与具体问题无关,为特定用例使用应用程序范围的 bean 是很奇怪的。它已在所有会话中的所有用户之间共享。因此,如果该操作由世界其他地方的 webapp 用户 X 调用,则世界上所有其他 webapp 用户都会看到它被反映。您不想使用请求或查看范围 bean 吗?

也可以看看:

于 2012-08-16T21:36:08.440 回答