0

Starting to learn ofbiz, I am following the tutorial here: https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Tutorial+-+A+Beginners+Development+Guide#OFBizTutorial-ABeginnersDevelopmentGuide-SecureYourApplicationbyAuthentication

Now I am in the step to make the list form of persons editable. In this step I need to create a service which will be used for auto-fields-service. Below I give the code which I have done.

In the controller.xml of my componenent I have created a requestMaps as follows:

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

Moving now to the PracticeScreens.xml i have the following for 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>

If you see above the ListPersons calls the service updatePracticePerson.

inside servicedef/services.xml i have the following:

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

In the root of my project in the file ofbiz-component.xml i have :

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

this to make sure that my service is loaded.

Although all of the above seem correct to me I get the following error :

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)

Which obviously implies that everything is not ok and there is something wrong with my service. Could you please assist on this?

Thanks in advance, gianis

giannisapi
  • 2,641
  • 3
  • 24
  • 31

2 Answers2

0

Restart OFBiz and check the logs. During startup it will show you loading your component and then the services defined in your component. You should be able to see the problem in the logs

Bilgin Ibryam
  • 3,345
  • 2
  • 19
  • 20
  • hi, i did this and my component seems to be loading ok. the error that I get is still the same though : [component://practice/widget/PracticeForms.xml]: java.lang.IllegalArgumentException: Error finding Service with name updatePracticePerson for auto-fields-service in a form widget – giannisapi Feb 26 '14 at 09:39
  • on thing is that although in the logs i see the services from the other components being loaded I dont see any log for my component to say that the services are loaded – giannisapi Feb 26 '14 at 10:10
0

at the end i found the answer myself.

in the file on the root of my component ofbiz-component.xml i had:

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

when I should have:

<resource-loader   name="main" type="component"/>
giannisapi
  • 2,641
  • 3
  • 24
  • 31