• Type: Bug
    • Resolution: Fixed
    • Priority: Major
    • 1.1.25
    • Affects Version/s: 1.1.22
    • Component/s: Mayaa
    • None

      autoBuildでcontextPathが"/"以外の場合、./../~の相対パス絶対化処理が正しく動作しない。

      contextPath に関係なく "/" が渡されているかのように動作する。

          [MAYAA-58] autoBuildでcontextPathが"/"以外の場合、./../~の相対パス絶対化処理が正しく動作しない

          suga added a comment -

          ServletContext#getServletContextName() を AutoPageBuilder#init へ渡すように修正。(rev.3431)

          suga added a comment - ServletContext#getServletContextName() を AutoPageBuilder#init へ渡すように修正。(rev.3431)

          suga added a comment -

          ありがとうございます。
          この情報を元に修正しました。

          suga added a comment - ありがとうございます。 この情報を元に修正しました。

          どうしてもAutoBuildを利用することが必要なため、当初は
          /META-INF/org.seasar.mayaa.provider.ServiceProviderに以下の設定を追加することで、暫定的に動作させております。

          <provider>
          <engine>
          ...
          <parameter name="autoBuild.contextPath" value="/projects-context-path"/>
          ...
          </engine>
          </provider>

          現在は、MayaaServletの代わりに、(上記の設定を削除した上で)次のようなサーブレットを使用しております。

          import org.seasar.mayaa.impl.AutoPageBuilder;
          import org.seasar.mayaa.impl.MayaaServlet;

          public class MayaaServletExt extends MayaaServlet {

          private static final long serialVersionUID = 1L;

          @Override
          protected void initAutoPageBuilder()

          { String contextPath = getServletContext().getContextPath(); AutoPageBuilder.INSTANCE.init(getServletConfig(), contextPath); }

          }

          MayaaServletの初期化を行う際に、AutoBuilder#init(ServletContext)ではなく、AutoBuilder#init(ServletContext,String)を呼び出すように変更することで、「/」以外のコンテキストパスを持つアプリケーションでも、動作するようです。

          Yumeto Yamagishi added a comment - どうしてもAutoBuildを利用することが必要なため、当初は /META-INF/org.seasar.mayaa.provider.ServiceProviderに以下の設定を追加することで、暫定的に動作させております。 <provider> <engine> ... <parameter name="autoBuild.contextPath" value="/projects-context-path"/> ... </engine> </provider> 現在は、MayaaServletの代わりに、(上記の設定を削除した上で)次のようなサーブレットを使用しております。 import org.seasar.mayaa.impl.AutoPageBuilder; import org.seasar.mayaa.impl.MayaaServlet; public class MayaaServletExt extends MayaaServlet { private static final long serialVersionUID = 1L; @Override protected void initAutoPageBuilder() { String contextPath = getServletContext().getContextPath(); AutoPageBuilder.INSTANCE.init(getServletConfig(), contextPath); } } MayaaServletの初期化を行う際に、AutoBuilder#init(ServletContext)ではなく、AutoBuilder#init(ServletContext,String)を呼び出すように変更することで、「/」以外のコンテキストパスを持つアプリケーションでも、動作するようです。

            Assignee:
            suga
            Reporter:
            suga
            Votes:
            1 Vote for this issue
            Watchers:
            Start watching this issue

              Created:
              Updated:
              Resolved: