Uploaded image for project: 'Tuigwaa'
  1. Tuigwaa
  2. TUIGWAA-96

検索結果の表示に削除リンクをつけ、表示された結果の「削除」を押すとアプリケーションエラーが発生する

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.9.1
    • Fix Version/s: 1.0
    • Component/s: database, plugin
    • Labels:
      None

      Description

      リビジョン : 1027です。

      エラーログ↓↓

      java.lang.NullPointerException
      at org.seasar.tuigwaa.model.common.EntityUtils.getKeys(EntityUtils.java:375)
      at org.seasar.tuigwaa.model.DAOServiceImpl.getFunctionSet(DAOServiceImpl.java:178)
      at org.seasar.tuigwaa.model.DAOServiceImpl.getDAO(DAOServiceImpl.java:164)
      at org.seasar.tuigwaa.model.DataServiceImpl.delete(DataServiceImpl.java:63)
      at org.seasar.tuigwaa.model.DataServiceImpl$$EnhancedByS2AOP$$686fdca5.delete$$invokeSuperMethod$$(DataServiceImpl$$EnhancedByS2AOP$$686fdca5.java)
      at org.seasar.tuigwaa.model.DataServiceImpl$$EnhancedByS2AOP$$686fdca5$$MethodInvocation$$delete6.proceed(MethodInvocationClassGenerator.java)
      at org.seasar.tuigwaa.logic.aop.MethodDecorateInterceptorImpl.invoke(MethodDecorateInterceptorImpl.java:25)
      at org.seasar.tuigwaa.model.DataServiceImpl$$EnhancedByS2AOP$$686fdca5$$MethodInvocation$$delete6.proceed(MethodInvocationClassGenerator.java)
      at org.seasar.tuigwaa.model.DataServiceImpl$$EnhancedByS2AOP$$686fdca5.delete(DataServiceImpl$$EnhancedByS2AOP$$686fdca5.java)
      at org.seasar.tuigwaa.controller.DatabaseAction.deleteRecord(DatabaseAction.java:117)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
      at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
      at org.apache.struts.actions.MappingDispatchAction.execute(MappingDispatchAction.java:169)
      at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
      at org.seasar.struts.processor.S2TilesRequestProcessor.processActionPerform(S2TilesRequestProcessor.java:122)
      at org.seasar.struts.processor.AcceptorImpl.process(AcceptorImpl.java:126)
      at org.seasar.struts.processor.S2TilesRequestProcessor.process(S2TilesRequestProcessor.java:61)
      at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
      at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      at org.seasar.tuigwaa.util.filter.TgwFilter.doFilter(TgwFilter.java:67)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      at org.seasar.tuigwaa.util.filter.EncodingFilter.doFilter(EncodingFilter.java:65)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      at org.seasar.tuigwaa.util.filter.ForwardFilter.doFilter(ForwardFilter.java:83)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      at org.seasar.struts.filter.S2StrutsFilter.doFilter(S2StrutsFilter.java:45)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:60)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
      at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
      at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
      at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
      at java.lang.Thread.run(Thread.java:595)

      削除リンクによって呼び出されたURL↓↓

      /tuigwaa/testtest/deleteRecord.do?searchRedirectUrl=/tuigwaa/testtest/searchtgw_entity_1.do%3FtableName%3Dtgw_entity%26_pageName%3D%2583g%2583b%2583v%2583y%2581%255B%2583W%26max%3D10%26tgw_attr%3D%2597%25A2%258C%25A9%26button%3D%258C%259F%258D%25F5&tableName=tgw_entity&pageName=%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8&id=1

        Activity

        Hide
        someda someda added a comment -

        ActionLinkFactory#bindDeleteActionLink でパスを生成する際に、
        検索結果がある場合に、tableName パラメータが、CharUtil#createQuery にて
        & にて生成されてしまう。

        通常の検索結果が無い場合には、tableName パラメータが deleteRecord.do の
        一番最初のパラメータであることから、DatabaseAction#deleteRecord からでも
        正しく entity 名を取得できていたが、redirectUrl が先に入ることによって、entity 名を
        取得することが出来なくなっていた。

        対処としては、tableName パラメータも、id と同様に、& でつないで渡すことにより
        ボタンの場合でもリンクの場合でも正常に動作するようになる。

        pageName は、StrutsUtil#getURLDecodedParameter を利用することにより問題なく取得できている。

        Show
        someda someda added a comment - ActionLinkFactory#bindDeleteActionLink でパスを生成する際に、 検索結果がある場合に、tableName パラメータが、CharUtil#createQuery にて & にて生成されてしまう。 通常の検索結果が無い場合には、tableName パラメータが deleteRecord.do の 一番最初のパラメータであることから、DatabaseAction#deleteRecord からでも 正しく entity 名を取得できていたが、redirectUrl が先に入ることによって、entity 名を 取得することが出来なくなっていた。 対処としては、tableName パラメータも、id と同様に、& でつないで渡すことにより ボタンの場合でもリンクの場合でも正常に動作するようになる。 pageName は、StrutsUtil#getURLDecodedParameter を利用することにより問題なく取得できている。
        Hide
        someda someda added a comment -

        ボタン、リンクともに確認

        Show
        someda someda added a comment - ボタン、リンクともに確認

          People

          • Assignee:
            someda someda
            Reporter:
            satomi Reiji, Satomi
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development