Uploaded image for project: 'Teeda'
  1. Teeda
  2. TEEDA-16

[Seasar-user:3935] [S2JSF] 1.1.0 Beta1 の m:rendered の動作について

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.0-beta-4
    • Fix Version/s: 1.0-beta-5
    • Component/s: None
    • Labels:
      None

      Description

      S2JSF 1.1.0 Beta 1 で m:rendered がうまく使えずに
      悩んでいます。

      試しに以下のテストを

      • S2JSF Example 1.0.14
      • S2JSF Example 1.1.0 Beta1
        の両方に入れて実行してみたのですが、 結果が異なる
        ようでした。

      ▼ rendered_test.html
      ----------------------------------------------------------
      <html xmlns:m="http://www.seasar.org/maya">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <title>test</title>
      </head>

      <body>
      <h1>rendered test</h1>
      <form>

      <input type="text" m:value="#

      {foo}" />
      <input type="submit" m:action="./rendered_test.html"/>

      <p>
      foo == <span m:value="#{foo}

      "/><br/>
      foo == 123 (<span m:value="#

      {foo == 123}"/>)<br/>
      foo != 123 (<span m:value="#{foo != 123}"/>)<br/>

      <br/>

      <span m:rendered="#{foo == 123}

      ">foo == 123</span>
      <span m:rendered="#

      {foo != 123}">foo != 123</span>
      (rendered)<br/>

      <span m:value="foo == 123" m:rendered="#{foo == 123}"/>
      <span m:value="foo != 123" m:rendered="#{foo != 123}

      "/>
      (rendered+m:value)<br/>

      foo is
      <span m:value="null" m:rendered="#

      {foo == null}

      "/>
      <span m:value="not null" m:rendered="#

      {foo != null}

      "/>

      </p>

      </form>

      </body>
      </html>
      ----------------------------------------------------------

      ▼ 1.0.14の実行結果 (123を入力してsubmit)
      ----------------------------------------------------------
      foo == 123
      foo == 123 (true)
      foo != 123 (false)

      foo == 123 (rendered)
      foo == 123 (rendered+m:value)
      foo is not null
      ----------------------------------------------------------

      ▼ 1.1.0 b1の実行結果 (123を入力してsubmit)
      ----------------------------------------------------------
      foo == 123
      foo == 123 (true)
      foo != 123 (false)

      foo != 123 (rendered)
      foo != 123 (rendered+m:value)
      foo is null
      ----------------------------------------------------------

      下3行が異なります。

      確認は、Tomcat 5.5.17のzipを展開し、S2JSF Exampleと
      テストコードをコピーして行いました。

        Activity

        Hide
        shot shot added a comment -

        この件、修正済み。

        UIComponentBase.isRendered()でrendered属性を上書きしてたのが
        原因。shinsukeさんにより修正済み。

        Show
        shot shot added a comment - この件、修正済み。 UIComponentBase.isRendered()でrendered属性を上書きしてたのが 原因。shinsukeさんにより修正済み。
        Hide
        manhole manhole added a comment -

        内容とは関係ないですけれど、{code}でソースコード
        部分を囲むと、フォーマットされて見やすくなります。

        {code}
        ソースコード
        {code}

        Show
        manhole manhole added a comment - 内容とは関係ないですけれど、{code}でソースコード 部分を囲むと、フォーマットされて見やすくなります。 {code} ソースコード {code}
        Hide
        shot shot added a comment -

        TeedaのJSPで

        <%@ page contentType="text/html; charset=UTF-8" %>
        <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
        <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
        <html>
        <head>
        <title>add</title>
        </head>
        <body>
        <f:view>
        <h:form>
        <h:inputText id="a" value="#

        {foo}

        "/>
        <h:commandButton action="./r.jsp" value="calculate"/>
        <h:outputText rendered="#

        {foo == 123}

        " value="hoge"/>
        <h:outputText rendered="#

        {foo != 123}

        " value="foo"/>
        </h:form>
        </f:view>
        </body>
        </html>

        とすると動作していますね。
        ということは、S2JSF側なのかも。

        Show
        shot shot added a comment - TeedaのJSPで <%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <html> <head> <title>add</title> </head> <body> <f:view> <h:form> <h:inputText id="a" value="# {foo} "/> <h:commandButton action="./r.jsp" value="calculate"/> <h:outputText rendered="# {foo == 123} " value="hoge"/> <h:outputText rendered="# {foo != 123} " value="foo"/> </h:form> </f:view> </body> </html> とすると動作していますね。 ということは、S2JSF側なのかも。

          People

          • Assignee:
            shot shot
            Reporter:
            shot shot
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development