Создание сервиса ОфБиз

Начиная изучать бизнес, я следую руководству здесь: https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Tutorial+-+A+Beginners+Development+Guide#OFBizTutorial-ABeginnersDevelopmentGuide-SecureYourApplicationbyAuthentication

Теперь я нахожусь на шаге, чтобы сделать форму списка лиц редактируемой. На этом шаге мне нужно создать сервис, который будет использоваться для автоматического обслуживания полей. Ниже я даю код, который я сделал.

В файле controller.xml моего компонента я создал requestMaps следующим образом:

 <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>

Переходя теперь к PracticeScreens.xml, у меня есть следующее для personForm:

<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>

The above includes the ListPersons from PracticeForms.xml, which I have as :

<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>

Если вы видите выше, ListPersons вызывает службу updatePracticePerson.

внутри servicedef/services.xml у меня есть следующее:

 <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>

В корне моего проекта в файле biz-component.xml у меня есть:

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

это, чтобы убедиться, что мой сервис загружен.

Хотя все вышеперечисленное кажется мне правильным, я получаю следующую ошибку:

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)

Что, очевидно, подразумевает, что все не так и что-то не так с моим сервисом. Не могли бы вы помочь в этом?

Заранее спасибо, янис


person giannisapi    schedule 25.02.2014    source источник


Ответы (2)


Перезапустите OFBiz и проверьте журналы. Во время запуска он покажет вам загрузку вашего компонента, а затем службы, определенные в вашем компоненте. Вы должны увидеть проблему в логах

person Bilgin Ibryam    schedule 26.02.2014
comment
привет, я сделал это, и мой компонент, кажется, загружается нормально. ошибка, которую я получаю, остается той же: [component://practice/widget/PracticeForms.xml]: java.lang.IllegalArgumentException: Ошибка поиска службы с именем updatePracticePerson для службы автополей в виджете формы - person giannisapi; 26.02.2014
comment
Дело в том, что, хотя в журналах я вижу, как загружаются службы из других компонентов, я не вижу никакого журнала для моего компонента, чтобы сказать, что службы загружены - person giannisapi; 26.02.2014

в конце концов я нашел ответ сам.

в файле в корне моего компонента ofbiz-component.xml у меня было:

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

когда я должен был:

<resource-loader   name="main" type="component"/>
person giannisapi    schedule 27.02.2014