Creazione del servizio di OFbiz.
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
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