0

JSF 2.0 サーブレットの作成方法とポートレットの作成方法は知っていますが、両方のテクノロジーを組み合わせるには問題があります。を介してバッキング Bean のメソッドを呼び出さなければならないまで、私の JSF ポートレットは正常に動作します<h:commandLink />。これらのリンクをクリックすると、現在のページがリロードされ、メソッドは呼び出されません。私のアプリケーションには追加の設定が必要だと思います。このようなコマンド リンクを機能させるには、次のことを行う必要があります。

<h:commandLink action="#{backingBean.doSomething}" />

JSF 2.0 ポートレット ブリッジを提供する WebSphere 8 ポータル サーバーを使用していることに注意してください。

編集

ここに基本的な競合があります。

  • ポートレット API は URL の生成を担当します - 有効なポータル URL を生成します
  • JSF は URL の生成を担当します - 有効な JSF-URL を生成します

マネージド Bean は、アノテーションを使用して構成されます。

@ManagedBean(name = "backingBean")
@ViewScoped
public class entryEditController
{
     public String doSomething()
     {
         return "result.xhtml";
     }
}

これは私のfaces-config.xmlです

  <?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">
      <application>
          <view-handler>com.ibm.faces20.portlet.FaceletPortletViewHandler</view-handler>
          <el-resolver>com.ibm.faces20.portlet.PortletELResolver</el-resolver>
          <resource-handler>com.ibm.faces20.portlet.httpbridge.PortletResourceHandler</resource-handler>
      </application>
  </faces-config>
4

1 に答える 1

0
  1. WAS 8.0.0.8 への更新
  2. Bean がそうである@SessionScoped@ViewScoped、これを web.xml に追加する必要がある場合:

    <context-param>
       <param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name>
       <param-value>false</param-value>
    </context-param>
    
  3. ステップ 2 の前に、無効なアクション値を持つ新しいコマンド ボタンを追加しました。これにより、検証エラーが発生します。<h:messages />検証エラーが発生した場合、コマンドは実行されません =>テンプレートに a を追加するなどして、検証エラーがないことを確認してください
  4. この回答を読んでください: https://stackoverflow.com/a/2120183/395879
于 2014-08-15T12:41:59.350 に答える