JBOSS SEAM - لا يمكن استخدام التعليقات التوضيحية في نفس الوقت مع أساليب الملحقات لخصائص مختلفة؟

StackOverflow https://stackoverflow.com/questions/1385208

سؤال

لقد أنشأت نموذجًا جديدًا باستخدام Sean-Gen (Seam New-Form) وأضفت حقلًا آخر إليه باستخدام تعليق توضيحي:

@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' أو 'بارفيلد"عرض العرض ويعمل بشكل صحيح ، ولكن إذا حاولت استخدام كليهما في نفس الوقت ، أحصل على الاستثناء أعلاه.

لقد لاحظت أيضًا أنه إذا استخدمت فقط in insations (قم بإزالة طرق الإكسسور من الفول) ، تعمل الصفحة.

هل هذا شيء متوقع ويجب أن أقوم بواجبي قبل السؤال؟

أنا أستخدم JBOSS 5.1.0.GA و SEAM 2.2.0.GA و Java 6.

هل كانت مفيدة؟

المحلول

تبين أن هذا السلوك المتوقع ، نقلاً عن إجابة من منتدى التماس:

استخدم @in (مطلوب = خطأ) إذا كان مكون التماس الذي تحقنه لا يحتوي على شرح Autocreate على مستوى الفصل.

لذلك ، التغيير:

@In private String bar;

ل:

@In (required=false) private String bar;

إصلاح المشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top