0

次のコードがありますが、Web ブラウザーで何をしても送信ボタンが表示されません。

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

または、CSS がstyles.css何らかの方法でそれを隠しています。これは、CSS ファイルを確認するか、ブラウザーの開発者ツールセットを使用するか、生成された HTML 出力を確認することで確認できます。

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

以下も参照してください。


具体的な問題とは関係ありませんが、特定のユース ケースにアプリケーション スコープの Bean を使用するのは非常に奇妙です。すべてのセッションのすべてのユーザー間で共有されています。そのため、アクションが世界中の Web アプリケーション ユーザー X によって呼び出された場合、世界中の他のすべての Web アプリケーション ユーザーはそれが反映されていることを確認できます。request または view スコープ Bean を使用したくないですか?

以下も参照してください。

于 2012-08-16T21:36:08.440 に答える