JBoss縫い合わせい@に注釈を使用すると同時にアクセス用メソッドの異なる。
-
21-09-2019 - |
質問
私は発生する新しい形をショーン-gen(縫い目新しい形及び付加フィールドで利用いただけるようになっているものになるとアノテーションには:
@Stateful
@Name("dummy")
public class DummyBean implements Dummy
{
@Logger private Log log;
@In StatusMessages statusMessages;
@In private String bar;
private String foo;
public void doStuff()
{
String msg = "dummy.doStuff() action called with foo: #{dummy.foo} and bar: #{bar}. instance variable for bar:" + bar;
log.info(msg);
statusMessages.add(msg);
}
@Length(max = 10)
public String getFoo()
{
return foo;
}
public void setFoo(String value)
{
this.foo = value;
}
@Remove
public void destroy() {}
}
ユーザーインターフェイスはこの
@Local
public interface Dummy
{
public void doStuff();
public String getFoo();
public void setFoo(String value);
public void destroy();
}
問題は、私がアクセスの物件取得します:
javax.faces.FacesException: javax.el.ELException: /dummy.xhtml @22,52 value="#{dummy.foo}": Error reading 'foo' on type org.javassist.tmp.java.lang.Object_$$_javassist_seam_2
at javax.faces.component.UIOutput.getValue(UIOutput.java:187)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:201)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:284)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:154)
.
.
.
Caused by: javax.ejb.EJBTransactionRolledbackException: @In attribute requires non-null value: dummy.bar
at org.jboss.ejb3.tx.Ejb3TxPolicy.handleInCallerTx(Ejb3TxPolicy.java:115)
at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:130)
私はこの:
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.org/rich"
xmlns:a="http://richfaces.org/a4j"
template="layout/template.xhtml">
<ui:define name="body">
<h:form id="dummyForm">
<rich:panel>
<f:facet name="header">dummy header</f:facet>
<s:decorate id="fooField" template="layout/edit.xhtml">
<ui:define name="label">Foo</ui:define>
<h:inputText id="foo" required="true"
value="#{dummy.foo}"/>
</s:decorate>
<s:decorate id="barField" template="layout/edit.xhtml">
<ui:define name="label">Bar</ui:define>
<h:inputText id="bar" required="true"
value="#{bar}"/>
</s:decorate>
<div style="clear:both"/>
</rich:panel>
<div class="actionButtons">
<h:commandButton id="doStuff" value="doStuff"
action="#{dummy.doStuff}"/>
</div>
</h:form>
</ui:define>
</ui:composition>
れば除去すること"、また"fooField'または'barField のビューを描画し、正常に動作しない問題を、利用するようにして両方を同時に取得し、上記の例外です。
また使用すれば@にアノテーション(去のアクセス用メソッドからのbean)のページです。
こう見ることができるということも課題お問い合わせいただく前に?
を使用していJBoss5.1.0.GA、縫い目2.2.0.GAおよびJava6.
解決
シームフォーラムのからの回答を引用し、この予想される動作が判明します:
使用@In(必須= false)の場合、Seamコンポーネントあなたのクラスレベルで@AutoCreateアノテーションを持っていませんよ注入ます。
だから、変えるます:
@In private String bar;
と
@In (required=false) private String bar;
問題を修正します。
所属していません StackOverflow