0

ローカルのTomcatのコンテキストパス「/path」でstruts2アプリケーションを問題なく実行しています。Webサーバーにデプロイすると(プロキシを使用して「http://www.domain.com」から「myserver:8080 / path /」にリダイレクトします)、Strutsはあらゆる種類の奇妙なことを行います。

まず、-tagsにコンテキストが含まれます。これは、属性によってオフにすることができます。ただし、残念ながら、フォームのアクション属性にパスも含まれているため、ログインフォームは「 http://www.domain」ではなく「 http://www.domain.com/path/login.action 」を指します。 com /login.action "..。

ここに追加されているデフォルトのコンテキストを変更するか、フォームに対してこれをオフにする可能性はありますか?(-tagsを保持したいのですが、デフォルトのHTMLフォームを使用するのが唯一の方法のようです。)よろしくお願いします。

4

2 に答える 2

0

他の人も問題を抱えていることがわかりましたが、フレームワークメーカーはこれが問題であるとは考えていないようです。私の解決策:

  • すべてのs:url-tagsでincludeContext="false"を使用します
  • s:formタグの代わりに、通常のフォームを使用し、アクションを「actionname.action」に設定し、各フィールドにtablerows()を含む単純なテーブルを含めます。s:textfieldなどは引き続き使用できます。
  • 残念ながら、HTTPセッションはパス "/ path"(ApplicationPath)に設定されるため、機能しなくなります。これは、JSESSIONIDが/pathに設定されていることを保存するCookieが原因です。これは、訪問者がhttp://www.domain.com/path/login.actionにいるときにのみセッション変数が保存され、 http://www.domainにリダイレクトされるとそれらが失われることを意味します。 .com / Interestingstuff.action ...私の解決策は、ここで説明するように、JavaScriptを介してJSESSIONID cookieクライアント側を設定する必要があるハックです:Struts2:セッションの問題(リバースプロキシ後)

これが誰かに役立つことを願っています...より良い解決策を見つけたら、私に知らせてください。:-)

于 2010-08-03T13:34:58.313 に答える
0

この質問への回答は非常に遅いですが、同じ問題に直面したときに最近このページにアクセスしました。

私が取り組んでいたアプリケーションは、context-rootvizを追加していました。ローカルホスト上の私のURLへの「myContextRoot」とそれはそこで完全に機能していました。たとえば、前述のように、アクション「myAction」は次のようになり http://localhost:8050/myContextRoot/myAction.action ましたが、サーバーにデプロイした瞬間に機能しなくなり、地獄のように検索した後、解決策を見つけました。GlassfishにEARファイルをデプロイしていますが、そこにapplication.xmlファイルがあります。application.xmlには、値が「myContextRoot」であるタグ「context-root」があり、これを「/」に変更しました。その後、ローカルホストと同様にURLを取得しました。

それが役立つことを願っています:)

于 2014-02-03T09:50:44.087 に答える