問題タブ [spring-portlet-mvc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - SpringポートレットをWebMVCに移行します
私は既存のプロジェクトを再構築するように割り当てられました。このプロジェクトは、2つの機能を備えたポータルです。
- ユーザーがシングルサインオンして、他の既存のWebアプリからの簡単な情報を表示できるようにする
- 他のWebアプリのAPI/データベースを介したユーザーの管理
このプロジェクトでは、Spring Portlet MVC 3、eXoポータルコンテナ、およびCASシングルサインオンを使用します(それぞれがスタンドアロンのWebアプリです)。
時間が経つにつれて、最初の機能をシャットダウンする必要があることがわかります。これにより、シングルサインオンが残り、ユーザーはリンクをクリックして他のシステムにアクセスできます。このプロジェクトをSpringMVCを使用して通常のWebアプリに変換し、eXoプラットフォームの重さを取り除きたいと考えています。この状況にさらされた人は誰でも提案をしてください。これを行うためのエレガントな方法はありますか?
java - RenderRequest 時のプロトコル リダイレクト
私は、Liferay ポータル サーバーで Spring Portlet-MVC フレームワークと Velocity を使用するプロジェクトに取り組んでいます。いくつかのページについては、安全な接続で提供する必要があります。ポートレットにかなり慣れていないので、Action-Method にリンクしてそこからリダイレクトするという解決策を思いつきました。
私の解決策はうまくいきますが、私にはあまりいいとは思えません。誰かがこれを行うための別のより透過的な方法を考えることができるかどうか疑問に思っていました (おそらく RenderMappings でインターセプターとアノテーションを使用しますか?)。
どんな提案でも大歓迎です!
spring-mvc - Spring ポートレット MVC 3.1 は、どのアノテーション付きメソッドを複数のコントローラーでレンダリングするかをどのように決定しますか?
複数のコントローラー クラスと DefaultAnnotationHandlerMapping を使用する場合、Spring Portlet MVC 3.1 を使用すると問題が発生します。
バックグラウンド
- Render & Action フェーズのアノテーションを備えた Spring Portlet MVC 3.1 を使用しています。
- JBoss EPP 5.1.1 を使用しています
問題
- パラメータを使用したポートレット レンダリング リクエストの場合、ポートレットで正しくないページがレンダリングされる
原因
- Spring ポートレット MVC は、正しいアノテーションを持つ予想されるメソッドとは異なる @RenderMapping のメソッドを使用しています
テクニカル分析
すべてのコントローラーには @RenderMapping および @ActionMapping アノテーションが含まれており、ポートレット URL で設定されたパラメーターに基づいて予期されるメソッドが確実に呼び出されるようにするための「params」引数があります。デフォルトのレンダリングには、「params」引数のない @RenderMapping アノテーションを持つメソッドがあり、リクエストにパラメーターが含まれていない場合に空の JSP をレンダリングするために使用します。
あなたの本の第 7 章と第 8 章を読んだことから、Dispatcher Portlet が着信要求の適切なハンドラー マッピングを取得し、それを構成済みのコントローラー Bean の適切なメソッドに送信しようとすることがわかりました。私たちの想定では、デフォルトの @RenderMapping アノテーション (パラメーターなし) は、特定のリクエストパラメーターに一致するアノテーションを持つコントローラーに他のメソッドがないことを確認した後にのみ呼び出されると想定していました。
ただし、この仮定が正しくないことを認識するためにデバッグを行いました。DefaultAnnotationHandlerMapping は、コントローラー Bean で使用可能なアノテーションのリストを事前定義された順序でトラバースするように見えます。これは、デフォルトの @RenderMapping アノテーション (パラメーターなし) を持つコントローラー Bean がリストの前に表示される場合、リストのさらに下にある正しいメソッドではなく、デフォルトの @RenderMapping アノテーション (パラメーターなし) を持つメソッドが呼び出されることを意味します。 .
明らかなエラー
Windows環境で開発し、Linux環境にデプロイしています。Windows では、ハンドラーがコントローラー Bean をアルファベット順に循環することがわかります。そのため、最初に、'Z' に最も近い Bean 名を持つパラメーターなしで @RenderMapping アノテーション付きメソッドをコントローラーに追加することで問題を解決しました。
ただし、Linux では、コントローラー Bean が別の順序で検出されるようです。問題を強調するために、以下に Spring ログを添付しました。no params @RenderMapping アノテーションは YourDetailsController にあり、Windows のログでわかるように、リストの最後に表示されますが、Linux では表示されません。つまり、リスト内の YourDetailsController の後に表示されるコントローラーの 1 つにアクセスしようとすると、代わりに YourDetailsController の no params アノテーションが常にヒットすることになります。
質問
- 私たちの仮定は間違っていますか?
- 私たちの診断は期待される行動を反映していますか? それとも、Spring Portlet MVC のバグですか?
- ハンドラーマッピング Bean リストを形成するためにスキャンされた注釈を取得する別の方法はありますか?
- (注釈の代わりに) xml 構成を使用すると、問題が解決しますか?
- 複数のハンドラー マッピングと順序を定義して、デフォルトのハンドラー マッピングがディスパッチャー ポートレットによって使用される最後のハンドラー マッピングになるようにすることはできますか?
この問題に関するご意見やアドバイスをいただければ幸いです。
spring - @ModelAttributespringmvcポートレットとajaxフォームの送信
英語が下手でごめんなさい。私は文字通り私を混乱させている私の心の中で起こっている多くのことを持っています。フォームで送信された値を@ModelAttributeとして処理したいので、そもそも混乱します。@ModelAttributeを使用しなくても、私は優れており、すべてが完全に機能しています。
私の要件は、portletでのajaxフォーム送信とSpringMVC3.0アノテーションを処理することです。
私が持っているフォーム
次のjQueryを使用して、フォームをajax呼び出しとして送信します
私はajax呼び出しを処理するために次のコントローラーを持っています
Userクラスを作成し、@ModelAttributeを使用して値を設定/取得したいと思います。私はそれを使用することを理解しようとして多くのリンクを通り抜けてきました。例の1つは、taglib形式を使用しています。フォームをajax呼び出しとして送信するjQueryがありますが、フォームをこのパターンに変更するとコードが破損するかどうかわかりません。
助けてくれてありがとう!
java - コントローラー (Spring Portlet MVC) から PortletSession 属性 (インターセプターによって設定) にアクセスする
私は Spring Portlet MVC を初めて使用しますが、ここ数日、一生懸命勉強してきました。私の問題のコンテキストは次のとおりです
- 単一のコントローラーを備えた Spring Portlet MVC ポートレットがあります。
- ポートレットは、ユーザーがリソースにアクセスしたいときはいつでもHandlerInterceptor (メソッド「preHandleRender」) を呼び出すように構成されています。
- インターセプターは、ユーザーが認証されているかどうかを確認し、認証されていない場合は、ユーザーの Liferay 資格情報を取得して、他の多くの Web サービスでの認証を管理します (現時点では興味深いものではありません)。
- この後、インターセプターはユーザー データを PortletSession 内に格納します。
では、PortletSession に保存されているユーザー データを、インターセプターによってコントローラー内から取得するにはどうすればよいでしょうか??
sessionInterceptor.preHandleRender
ViewController クラス
リクエストがあれば、コードに関する詳細情報を提供する準備ができています。
java - Spring Portlet MVC でオブジェクト型パラメーターを取得する方法
私はSpring Portlet MVCに取り組んでいます。「CLASS」という名前のテーブルがあります。CLASS テーブルには複合主キーがあります。CLASS テーブルを別のテーブルで使用したい。コンボボックスに CLASS テーブルの項目を一覧表示したい。
コンボボックスが選択されたら、CLASS の複合 ID を取得する必要があります。しかし、IDが取得できません。id は CLASSID 型 (および id はオブジェクト) であるため、コンボボックスから int,string.. 型のパラメーターのみを取得します。
コンボボックスからオブジェクトを取得することは可能ですか? はいと答えた場合、これを行う方法は?
よろしく。
classId はオブジェクトです。クラス配列から名前の値とその他の値を取得できます。しかし、classId の値を取得できません。null を返します。Spring Portlet MVC でオブジェクト タイプ パラメータを取得するにはどうすればよいですか?
java - SpringおよびPortletタグのMaven依存関係
Netbeans IDEで次の問題が発生します-JSPファイルを作成し、これら2つのtaglibを内部に配置すると
その後、エラーが発生しますThe absolute uri ... cannot be resolved
。ASにデプロイするとアプリケーションは正常に動作しますが、開発中のオートコンプリートなどを楽しみたいと思います。私pom.xml
はこのように見えます-PasteBin。
クラスパスに必要なすべてのJARがあると思いますが、NetBeansにそれらのタグを認識させるにはどうすればよいですか?
java - Spring MVPorletActionMappingが機能していません
SpringMVCPortletフレームワークのコントローラーを使用した単純なログインフォームがあります。フォームは次のようになります
とコントローラー
そして問題は、フォームを送信すると/bookShop-1.0/portal/classic/showcase/somePortalGeneratedString
、ポートレットがlocalhost:8080/portal/classic/showcase
URL上にあるために間違ったページにリダイレクトされ、404エラーが発生することです。<portlet:renderURL>
タグとマッピングは正しく機能していますが、このフォームを単純に機能させることはできません。
私の環境は、JBoss JPP 6.0(GateIn 3.5に基づく)、Spring 3.2.1、およびPortlet2.0です。
java - ページ間のリダイレクト - Spring MVC
から始めてSpring Portlet MVC
いますが、この質問は にも当てはまると思いますSpring MVC
。この例をお見せしましょう
登録ページのコントローラー
問題は、ページから showRegisterPage メソッド (アクション) を呼び出すと、registration.jsp にリダイレクトされますが、この例外が発生することです。
これは、ModelAttribute
ユーザーを LoginController に配置することで修正できますが、コードの重複は実際には正しい方法ではないため、これを正しく解決するにはどうすればよいですか?また、showRegisterPage メソッドを RegistrationController に移動しようとしましたが、リンクが機能しません。誰かが、ページをコントローラーにバインドする方法を正確に説明できるでしょうか?
PS index.jsp と registration.jsp の両方に<form:form>
タグが含まれており、両方のコントローラーから定型コードも省略しました。
spring-webflow-2 - ポートレットで Spring Webflow リダイレクトが機能しない
ポートレット間通信機能を実装する必要があります。機能は以下のとおりです。
1) ユーザーが「createStep1.jsp」の「名前を付けて保存」リンクをクリックします。
2) 下記の WebflowsaveDraftStep1
が呼び出され、下書きがデータベースに保存されます。
3) ユーザーは別のポートレットmyportlet
にナビゲートされ、正常に保存されたメッセージがそこに表示されます。
どういうわけか、Webflow が で指定した URL にリダイレクトされませんexternalRedirect
。同じページにとどまります。以下はコードです:
理想的には、Google の URL をポートレットの URL に置き換えたいと考えていますlocalhost:8080/myportlet
。