JibX: как вывести поля из определенного класса в разные части XML - PullRequest
2 голосов
/ 03 марта 2009

Мне удалось получить то, что я хочу, при отображении с наследованием, подобным этому:

ThisClassShouldntExist

  • freeFlowMsg
  • ErrorMsg

BaseForm extends ThisClassShouldntExist

  • функция
  • подфункции

SpecificForm extends BaseForm

  • адрес

Мой переплет.xml:

<binding>
    <mapping class="com.struts.form.ThisClassShouldntExist" abstract="true">
        <value name="free-flow-message" field="freeFlowMessage" />
        <value name="error-msg" field="errorMessage" />
    </mapping>  

    <mapping class="com.struts.form.BaseForm" abstract="true">
        <value name="prog-name" field="function" />
        <value name="sub-prog-name" field="subFunction" />
    </mapping>

    <mapping name="cngaddress" class="com.struts.form.AddressDisplayForm">
        <structure name="header">
            <structure map-as="com.struts.form.BaseForm" usage="optional" />
        </structure>

        <value name="address" field="addressline1" usage="optional"/>

        <structure name="FOOTER">
            <structure map-as="com.struts.form.ThisClassShouldntExist" 
                               usage="optional" />
        </structure>
    </mapping>  
</binding>

Пример данных:

<?xml version="1.0" encoding="UTF-8"?>
<cngaddress>
  <header>
    <prog-name>prog-name</prog-name>
    <sub-prog-name>sub-prog-name</sub-prog-name>
  </header>
  <address>address</address>
  <FOOTER>
    <free-flow-message>free-flow-message</free-flow-message>
    <error-msg>error-msg</error-msg>
  </FOOTER>
</cngaddress>

Итак, суть в том, что мне нужно «разделить» выходные данные класса BaseForm на 2 разные части выходных данных XML. Первая часть входит в <header>, вторая в <footer>, но я также хочу избежать наследования, просто чтобы соответствовать JibX.

Я пытался сделать что-то подобное, но не получилось:

<structure name="FOOTER">
    <structure field="aFieldFromSuperClassBaseForm" 
               map-as="com.struts.form.ThisClassShouldntExist" 
               usage="optional" />
</structure>

Также пытался определить 2 <mapping> в той же привязке для того же класса, но, конечно, это не сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...