Domanda

Avvio di imparare il dibiz, sto seguendo il tutorial qui: https:// cwiki.apache.org/Confluence/display/ofbiz/ofbiz+tutorial+-+a+beginners+Deselopment+guide#ofbizTutorial-abeginnersDevelopmentGuide-SecureYouraApplicationBeatenticamento

Ora sono nel passo per rendere la forma di elenco di persone modificabili. In questo passaggio ho bisogno di creare un servizio che verrà utilizzato per il servizio Auto-Fields. Sotto dando il codice che ho fatto.

Nel controller.xml del mio componente ho creato una richiesta come segue:

 <request-map uri="updatePracticePerson">
    <security https="true" auth="true"/>
    <event type="service" invoke="updatePracticePerson"/>
    <response name="success" type="view" value="personForm"/>
    <response name="error" type="view" value="personForm"/>
</request-map>
.

Spostarsi ora per PracticecReens.xml Ho il seguente per la persona per persona:

<screen name="personForm">
    <section>
        <actions>
            <set field="headerItem" value="personForm"/>
            <set field="titleProperty" value="PageTitlePracticePersonForm"/>
            <entity-condition entity-name="Person" list="persons"/>
        </actions>
        <widgets>
            <decorator-screen name="CommonPracticeDecorator" location="${parameters.mainDecoratorLocation}">
                <decorator-section name="body">
                    <label text="Person List" style="h2"/>
                    <include-form name="ListPersons" location="component://practice/widget/PracticeForms.xml"></include-form>
                </decorator-section>
            </decorator-screen>       
        </widgets>
    </section>
.

Quanto sopra include i listperson da practiceforms.xml, che ho come:

<form name="ListPersons" type="list" list-name="persons" list-entry-name="person" target="updatePracticePerson" paginate-target="personForm">
    <auto-fields-service service-name="updatePracticePerson" default-field-type="edit" map-name="person"/>
    <field name="partyId"><hidden/></field>
    <field name="submitButton" title="Update" widget-style="smallSubmit"><submit button-type="button"/></field>
    <field name="deletePracticePerson" title="Delete Person" widget-style="buttontext">
        <hyperlink target="deletePracticePerson?partyId=${person.partyId}" description="${uiLabelMap.CommonDelete}" also-hidden="false"/>
    </field>
    <field name="submitButton" title="${uiLabelMap.CommonUpdate}"><submit button-type="button"/></field>
</form>
.

Se vedi sopra i listpersons chiama il servizio UpdatePracticeperson.

Inside ServiceDef / Services.xml Ho il seguente:

 <service name="updatePracticePerson" default-entity-name="Person" engine="simple"
        location="component://practice/script/org/hotwax/practice/PracticeServices.xml" invoke="updatePracticePerson" auth="true">
    <description>Create a Person</description>
    <auto-attributes include="pk" mode="IN" optional="false"/>
    <attribute name="salutation" mode="IN" type="String" optional="true"/>
    <attribute name="firstName" mode="IN" type="String" optional="false"/>
    <attribute name="middleName" mode="IN" type="String" optional="true"/>
    <attribute name="lastName" mode="IN" type="String" optional="false"/>
    <attribute name="suffix" mode="IN" type="String" optional="true"/>
</service>
.

Nella radice del mio progetto nel file dibiz-componente.xml ho:

 <service-resource type="model" loader="main" location="servicedef/services.xml"/>
.

Questo per assicurarsi che il mio servizio sia caricato.

Sebbene tutto quanto sopra mi sembra corretto, ottengo il seguente errore:

org.ofbiz.widget.screen.ScreenRenderException: Error rendering screen [component://common/widget/CommonScreens.xml#GlobalDecorator]: java.lang.RuntimeException: Error rendering included form named [ListPersons] at location [component://practice/widget/PracticeForms.xml]: java.lang.IllegalArgumentException: Error finding Service with name updatePracticePerson for auto-fields-service in a form widget (Error rendering included form named [ListPersons] at location [component://practice/widget/PracticeForms.xml]: java.lang.IllegalArgumentException: Error finding Service with name updatePracticePerson for auto-fields-service in a form widget)
.

che ovviamente implica che tutto non è ok e c'è qualcosa di sbagliato nel mio servizio. Potresti per favore aiutarti su questo?

Grazie in anticipo, Gianis

È stato utile?

Soluzione 2

Alla fine ho trovato la risposta da solo.

Nel file sulla radice del mio componente diBiz-componente.xml ho avuto:

<resource-loader   name="personForm" type="component"/>
.

Quando avrei dovuto:

<resource-loader   name="main" type="component"/>
.

Altri suggerimenti

Riavvia dibiz e controllare i registri.Durante l'avvio, ti mostrerà il caricamento del tuo componente e quindi i servizi definiti nel componente.Dovresti essere in grado di vedere il problema nei registri

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top