input type="buttonではなくbuttonタグへの対応
前回の悩みに続いてUI周りをいろいろと検証しています..
ボタンについては、input type="button" よりもが流行らしい...(ホント?)
で、早速検証すると、エラーがでてしまいました。
現象はS2JSF Example 1.1.2 のAdd.htmlで確認しました。
<input type="submit" value="calculate" m:action="#{addAction.calculate}"/>
を
<button type="button" m:action="#{addAction.calculate}"> calculate </button>
に書き換えて実行すると、
org.seasar.framework.beans.PropertyNotFoundRuntimeException: [ESSR0065]クラス(examples.jsf.action.impl.AddActionImpl$$EnhancedByS2AOP$$1e247e2)のプロパティ(calculate)が見つかりません org.seasar.framework.beans.impl.BeanDescImpl.getPropertyDesc(BeanDescImpl.java:132) org.seasar.jsf.el.S2PropertyResolver.getProperty(S2PropertyResolver.java:202) org.seasar.jsf.el.S2PropertyResolver.getValue(S2PropertyResolver.java:56) org.seasar.teeda.core.util.PropertyResolverUtil.getValue(PropertyResolverUtil.java:32) org.seasar.teeda.core.el.impl.commons.ComplexValueReplacer$JsfPropertySuffix.evaluate(ComplexValueReplacer.java:128) org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145) org.seasar.teeda.core.el.impl.commons.CommonsExpressionProcessorImpl.evaluate(CommonsExpressionProcessorImpl.java:94) org.seasar.teeda.core.el.impl.ValueBindingImpl.getValue(ValueBindingImpl.java:68) org.seasar.jsf.util.BindingUtil.getBindingValue(BindingUtil.java:110) org.seasar.jsf.render.html.HtmlElementRenderer.renderAttributes(HtmlElementRenderer.java:105) org.seasar.jsf.render.html.HtmlElementRenderer.encodeBegin(HtmlElementRenderer.java:53) javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:331) org.seasar.jsf.util.RenderUtil.encodeChild(RenderUtil.java:73) org.seasar.jsf.util.RenderUtil.encodeChildren(RenderUtil.java:63) org.seasar.jsf.util.RenderUtil.encodeChild(RenderUtil.java:77) org.seasar.jsf.util.RenderUtil.encodeChildren(RenderUtil.java:63) org.seasar.jsf.render.html.HtmlElementRenderer.encodeChildren(HtmlElementRenderer.java:87) javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:340) org.seasar.jsf.util.RenderUtil.encodeChild(RenderUtil.java:75) org.seasar.jsf.util.RenderUtil.encodeChildren(RenderUtil.java:63) org.seasar.jsf.render.html.HtmlElementRenderer.encodeChildren(HtmlElementRenderer.java:87) javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:340) javax.faces.webapp.UIComponentTag.encodeChildren(UIComponentTag.java:244) javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:212) org.seasar.jsf.processor.TagProcessorImpl.processTag(TagProcessorImpl.java:249) org.seasar.jsf.processor.TagProcessorImpl.process(TagProcessorImpl.java:239) org.seasar.jsf.processor.ElementProcessor.process(ElementProcessor.java:93) org.seasar.jsf.processor.TagProcessorImpl.processChildren(TagProcessorImpl.java:294) org.seasar.jsf.processor.TagProcessorImpl.processBodyTag(TagProcessorImpl.java:267) org.seasar.jsf.processor.TagProcessorImpl.process(TagProcessorImpl.java:235) org.seasar.jsf.processor.TagProcessorImpl.process(TagProcessorImpl.java:218) org.seasar.jsf.processor.ViewProcessor.process(ViewProcessor.java:198) org.seasar.jsf.processor.ViewProcessor.process(ViewProcessor.java:196) org.seasar.jsf.runtime.ViewRendererImpl.renderView(ViewRendererImpl.java:102) org.seasar.jsf.application.S2ViewHandler.renderView(S2ViewHandler.java:123) org.seasar.jsf.lifecycle.LifecycleImpl.render(LifecycleImpl.java:200) javax.faces.webapp.FacesServlet.service(FacesServlet.java:93) examples.jsf.util.RequestDumpFilter.doFilter(RequestDumpFilter.java:66) org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:62) org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:63) org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:122)
...orz