Как вызвать метод Java из простого метода в ofbiz

Я пытаюсь вызвать метод Java из простого метода, как это

<simple-method method-name="getProduct">
    <entity-one entity-name="Product" value-field="product">
      <field-map field-name="productId" from-field="parameters.productId" />
    </entity-one>
    <log message="productView=${product.uom}" level="info"/>
    <entity-one value-field="uomInfo" entity-name="Uom">
      <field-map field-name="uomId" from-field="product.uom" />
    </entity-one>
    <if-compare operator="equals" value="1001" field="product.priceTypeId">
    <entity-one value-field="category" entity-name="ProductCategory">
      <field-map field-name="productCategoryId" from-field="product.priceTypeCategoryId" />
    </entity-one>
    <else>
     <entity-one value-field="category" entity-name="ProductCategory">
      <field-map field-name="productCategoryId" from-field="product.productCategoryId" />
     </entity-one>
    </else>
    </if-compare>
    <set field="product.productCategoryId" from-field="category.categoryName" default-value="all"/>
    <call-class-method method-name="encodeString" ret-field="encodedDescription" class-name="org.ofbiz.base.util.StringUtil">  
    <field field="product.description" type="String" /> 
    </call-class-method> 
    <field-to-result field="product" />
    <field-to-result field="uomInfo" />
  </simple-method>
</simple-methods>

Когда я пытаюсь получить значение поля описания, он возвращает то же значение описания без обновления с закодированным значением.

Есть ли что-нибудь еще, что мне нужно сделать?

1 ответ

Решение

Вы не устанавливаете значение описания с возвращаемой строкой.

<call-class-method method-name="encodeString" ret-field="encodedDescription" class-name="org.ofbiz.base.util.StringUtil">  
    <field field="product.description" type="String" /> 
    </call-class-method> 

Ваш метод encodeString вернет закодированную строку и установит ее

возвращаемое поле ret-field="encodedDescription".

Таким образом, вы должны установить свое описание следующим образом

    <call-class-method method-name="encodeString" ret-field="encodedDescription" class-name="org.ofbiz.base.util.StringUtil">  
    <field field="product.description" type="String" /> 
    </call-class-method> 
    <set field="product.description" value="${encodedDescription}"/>
Другие вопросы по тегам