2008-09-16 101 views

答えて

4

あなたは春のMVCを使用している場合は、私がポートレットを使用することをお勧めします。 Springでは、ポートレットはページ全体の断片だけを扱うため、軽量コントローラです。書込みは非常に簡単です。 Spring 2.5を使用している場合は、新しい注釈サポートのすべての利点を楽しむことができ、Springアプリケーション全体に、依存性注入とSpringを使用する他のメリットがうまく収まります。

ポートレットコントローラはかなりサーブレットコントローラと同じで、ここでは簡単な例です:

ここ
@RequestMapping("VIEW") 
@Controller 
public class NewsPortlet { 

    private NewsService newsService; 

    @Autowired 
    public NewsPortlet(NewsService newsService) { 
     this.newsService = newsService; 
    } 

    @RequestMapping(method = RequestMethod.GET) 
    public String view(Model model) { 
     model.addAttribute(newsService.getLatests(10)); 
     return "news";   
    } 
} 

、NewsServiceは自動的にコントローラに注入されます。 viewメソッドはListオブジェクトをモデルに追加します。このオブジェクトはJSP内で$ {newsList}として利用できます。 Springは、メソッドの戻り値に基づいてnews.jspという名前のビューを探します。 RequestMappingはSpringに、このコンタクタがポートレットのVIEWモード用であることを伝えます。

XML設定は専用ビューとコントローラが配置されている場所を指定する必要があります。

<!-- look for controllers and services here --> 
<context:component-scan base-package="com.example.news"/> 

<!-- look for views here --> 
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/jsp/news/"/> 
    <property name="suffix" value=".jsp"/> 
</bean> 

あなたは、単に既存のアプリケーションにポートレットを埋め込みたい場合は、ポートレットコンテナをバンドルすることができ、そのようeXoとして、Sun、またはApacheである。アプリケーションを一連のポートレットとして構築する場合は、Liferay Portalなどの完全なポートレットソリューションを検討することをお勧めします。

+0

thnx、SpringポートレットMVCに関する経験はありますか?いくつかのチュートリアル、ガイダンス?たぶんポータルサーバーを推奨できますか? – moriarty

+0

それらを開発することは私の主要な仕事なので、私は豊富な経験を持っています。しかし、オンラインではあまり具体的な文書はありません。 Porletのフレームワークはほぼ同じなので、Spring MVCのドキュメントに従うことでかなり遠くまで到達することができます。 Liferayは優れたポータルですが、必要以上のものかもしれません。 – pjesi

2

タイルは痛みを伴うことがあります。前に来たもの(すなわち何もない)を大幅に改善しましたが、むしろ制限していました。

Wicketは、JSPで解決していない限り、あなたが探しているもの以上のものです。

+0

「タイルは痛みを伴う可能性がある」という理由についてコメントできますか? –

0

Tapestryは、再利用可能なコンポーネントを簡単に作成することを重視したJava Webアプリケーションフレームワークです。

私はsitemeshを使用していますが、標準のヘッダーとフッターで一連のページをラップするのには適していますが、Tapestryは多くのページで使用されるコンポーネントを作成するのに適しています。 Tapestryコンポーネントは、Sitemeshスタイルの折り返しを可能にする他のコンポーネントをパラメータとして取り込むことができます。

+0

フム、タペストリーが有望に見える... は、彼らが素敵なスクリーンキャストを持っている... http://tapestry.apache.org/tapestry5/screencast.html は多くのthnx、それをチェックアウトします。便利な答えは – moriarty

1

私はGWTの大きなファンです。コンポーネントを通常のJavaクラスとして記述して、自由にページに挿入することができます。全部がJavascriptにコンパイルされてしまいます。ここで

は例です:

public class MyApplication implements EntryPoint, HistoryListener 
{ 
    static final String INIT_STATE = "status"; 

    /** 
    * This is the entry point method. Instantiates the home page. 
    */ 
    public void onModuleLoad() 
    { 
     RootPanel.get().setStyleName ("root"); 
     initHistorySupport(); 
    } 

    private void initHistorySupport() 
    { 
     History.addHistoryListener (this); 

     // check to see if there are any tokens passed at startup via the browser’s URI 
     String token = History.getToken(); 
     if (token.length() == 0) 
     { 
      onHistoryChanged (INIT_STATE); 
     } 
     else 
     { 
      onHistoryChanged (token); 
     } 
    } 


    /** 
    * Fired when the user clicks the browser's 'back' or 'forward' buttons. 
    * 
    * @param historyToken the token representing the current history state 
    */ 
    public void onHistoryChanged (String historyToken) 
    { 
     RootPanel.get().clear(); 
     Page page; 
     if (Page1.TOKEN.equalsIgnoreCase (historyToken)) 
     { 
      page = new Page1(); 
     } 
     else if (Page2.TOKEN.equalsIgnoreCase (historyToken)) 
     { 
      page = new Page2(); 
     } 
     else if (Page3.TOKEN.equalsIgnoreCase (historyToken)) 
     { 
      page = new Page3(); 
     } 
     RootPanel.get().add (page); 
    } 
} 
0

「再利用可能なコンポーネント」とは何を意味するのでしょうか?しかし、バナー、フッター、ナビゲーションリンクなど、すべてのページに特定の共通要素が表示されるようにするには、さらにSiteMeshを見てください。私のチームは、いくつかの国際化されたWebアプリケーションでうまく使用してきました。

2

アプリケーションが本当にweb portalでない限り、ポートレットの使用はお勧めしません。

「再利用可能なコンポーネント」を使用する場合は、JSP tagfilesを使用してください。これらのコンポーネントは、通常のJSPと同じであるため、シンプルですが非常に強力です。

私はタイルの使用経験があり、複雑さはそれほど価値がありません。

1

私は、Ajax JSF(IceFaces)とLiferay Portalと一緒にポートレットに関する多くの経験をしています。実際にチュートリアルや本物の地獄を読むとすべてがうまく見えます。もちろん、私はSpring MVCやJSPではるかに便利で軽量だと思いますが、とにかく、ポートレットは技術をよくサポートしていません。

関連する問題