4

送信ボタンのあるフォームを使用して facelets ファイルからサーブレットを呼び出す適切な方法は何ですか? 特定のフォームが必要ですか?

4

2 に答える 2

10

<form>JSF の代わりにプレーンな HTML を使用して<h:form>ください。JSF<h:form>はデフォルトで POST リクエストを現在のビュー ID の URL に送信し、デフォルトでFacesServlet. フォーム アクションの URL またはメソッドを変更することはできません。プレーンな HTML<form>では、別の URL を指定でき、必要に応じてメソッドも指定できます。

次のキックオフの例では、検索リクエストを Google に送信します。

<form action="http://google.com/search">
    <input type="text" name="q" />
    <input type="submit" />
</form>

入力/ボタンにも JSF コンポーネントを使用する必要はないことに注意してください。などを使用することは可能<h:inputText>ですが、関連するバッキング Bean には値が設定されません。JSF コンポーネントのオーバーヘッドは不要です。

たとえば、 の URL パターンにマップされたサーブレットに POST リクエストを/foo/*送信し、 という名前のリクエスト パラメータを送信する必要がある場合はbar、次のようにフォームを作成する必要があります。

<form action="#{request.contextPath}/foo" method="post">
    <input type="text" name="bar" />
    <input type="submit" />
</form>

このようにして、サーブレットのdoPost()メソッドが呼び出されます。

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String bar = request.getParameter("bar");
    // ...
}
于 2012-04-16T15:13:51.817 に答える
-1

jsf から以下の方法で呼び出すことができます。

        <h:outputText value="Download" />
        <h:outputLink value="#{request.contextPath}/files" id="btnDownload1" styleClass="redButton">
        <h:outputText value="FILESDOWNLOAD" />
        </h:outputLink>
    </h:panelGrid>

次に、web.xml で:

<servlet>
  <servlet-name>files</servlet-name>
  <servlet-class>com.Download</servlet-class>

于 2016-08-29T11:37:53.700 に答える