Uploaded image for project: 'Click'
  1. Click
  2. CLK-622

Spring support is incomplete: Page mapping and auto mapping works not as expected

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None

    Description

      Example:

      webroot:
      /my-page.htm or /MyPage.htm, etc

      click.xml
      <pages package="some.path" autobinding="annotation" />

      spring.xml
      <bean id="myPage" class="other.package.CoolPage" name="MyPage, some.path.MyPage, please.be.happy" />

      This should work, generally speaking.
      Because Click actually has all parts it needs: htm and code.
      But, It doesn't work!

      XmlConfigService knows nothing about Spring, so it want some.path.MyPage.class!

      If we put this fake "public class MyPage extends Page {}" in "some.path" package - it will work as expected.

      Click will map MyPage.htm to some.pathMyPage.class , then it will load myPage or some.pathMyPage bean and "other.package.CoolPage" class will be used!

      Actually I can write Spring bean in scripting language and not to have classes at all!

      My suggestion: SpringClickServlet should try not only class name received from ConfigService, but also htm-to-correct bean-name (myPage) and webpath-to-correct bean-name (for page /foo_a/bar/my-page.htm it can be fooA_bar_MyPage – note _ vs . because . can't be used in bean id).

      PS: because . can't be used in Spring bean (any XML tag?) id,
      may be you should change class-to-bean name conversion in SpringClickServlet too.

      Attachments

        Activity

          People

            Unassigned Unassigned
            andreyrybin Andrew Fink
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated: