[TEEDA-16] [Seasar-user:3935] [S2JSF] 1.1.0 Beta1 の m:rendered の動作について Created: 2006-06-29  Updated: 2006-06-30  Resolved: 2006-06-30

Status: Resolved
Project: Teeda
Component/s: None
Affects Version/s: 1.0-beta-4
Fix Version/s: 1.0-beta-5

Type: Bug Priority: Major
Reporter: shot Assignee: shot
Resolution: Fixed Votes: 0
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と
テストコードをコピーして行いました。



 Comments   
Comment by shot [ 2006-06-30 ]

この件、修正済み。

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

Comment by manhole [ 2006-06-29 ]

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

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

Comment by shot [ 2006-06-29 ]

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側なのかも。

Generated at Thu Apr 25 19:58:14 JST 2024 using Jira 9.15.0#9150000-sha1:9ead8528714127d8cfabf2446010d7e62c0a195c.