Uploaded image for project: 'Mayaa'
  1. Mayaa
  2. MAYAA-58

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

    Details

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

      Description

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

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

        Activity

        Hide
        yumeto 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)を呼び出すように変更することで、「/」以外のコンテキストパスを持つアプリケーションでも、動作するようです。

        Show
        yumeto 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)を呼び出すように変更することで、「/」以外のコンテキストパスを持つアプリケーションでも、動作するようです。
        Hide
        suga suga added a comment -

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

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

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

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

          People

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

            Dates

            • Created:
              Updated:
              Resolved:

              Development