2014-09-16 3 views
2

드롭 다운 태그를 사용하고 있지만이 옵션을 선택한 후에 다른 필드를 업데이트하고 싶습니다. 양식에서 사용하고 있습니다. 제출하고 업데이트하기 위해 아약스를 사용할 수 있지만 ftl에서는 필드 또는 드롭 다운의 어떤 속성이 도움이되는지 찾을 수 없습니다.ofbiz Forms에서 ajax를 사용하는 방법?

감사합니다.

답변

1

이 문제를 해결할 수있는 방법을 찾았습니다. 우리는 js를 사용하여 게시, 요청 보내기 및 json 형식의 데이터를 가져옵니다. 예 :

  • 내 양식 :
    <field name="firstFieldId"> 
     
          <drop-down allow-empty="false"> 
     
           <list-options key-name="firstFieldId" list-name="listOptions1" description="${des1}"/> 
     
          </drop-down> 
     
         </field> 
     
         <field name="secondFieldId"> 
     
          <drop-down allow-empty="false"> 
     
           <list-options key-name="secondFieldId" list-name="listOptions" description="${des2}"/> 
     
          </drop-down> 
     
         </field>
    - 생성 test.js :
    $(document).ready(function(){ 
     
    \t $("select[name='firstFieldId']").change(function(){ 
     
    \t \t update($(this).val()); 
     
    \t }); 
     
    }); 
     
    function update(id) { 
     
        jQuery.ajax({ 
     
         url: 'myRequest', 
     
         type: "POST", 
     
         data:{ 
     
         \t firstFieldId: id 
     
         }, 
     
         success: function(res) { 
     
         \t var data = res.listOptions; 
     
          renderHtml(data); 
     
         } 
     
        }); 
     
    } 
     
    function renderHtml(data){ 
     
    \t var y = ""; 
     
    \t for (var x in data){ 
     
    \t \t y += "<option value='" + data[x].secondFieldId + "'>"; 
     
    \t \t y += data[x].des2 + "</option>"; 
     
    \t } 
     
    \t $("select[name='secondFieldId']").html(y); 
     
    }
  • 화면 :
    <actions> 
     
    \t <set field="layoutSettings.javaScripts[+0]" value="/delys/images/js/logistics.js" global="true"/> 
     
    </actions>
  • Controller.xml :

    <request-map uri="myRequest"> 
     
        <security auth="true" https="true"/> 
     
        <event type="service" invoke="myService"></event> 
     
        <response name="success" type="request" value="json"></response> 
     
    </request-map>
    myService에서 listOptions가 json 형식을 구문 분석합니다. 공통 controller.xml에서

  • JSON 요청 : 내 방법입니다

    <request-map uri="json"> 
     
         <security direct-request="false"/> 
     
         <event type="java" path="org.ofbiz.common.CommonEvents" invoke="jsonResponseFromRequestAttributes"/> 
     
         <response name="success" type="none"/> 
     
    </request-map>
    , 감사합니다!

관련 문제