如何使用Ajax在ofbiz形式? [英] How to use ajax in ofbiz Forms?

查看:795
本文介绍了如何使用Ajax在ofbiz形式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是下拉的标签,但我想更新后,选择在这一个选项的另一个领域。我使用它的形式。我知道我们可以使用AJAX提交和更新,但在FTL,我找不到领域的哪些属性或下拉可以帮助?

谢谢!

解决方案

我找到了一种方法来解决这个问题。我们将使用JS来发布,发送一个请求,并得到使用JSON格式的数据。 例如:

  • 在我的形式:

    <字段名称=firstFieldId>             <下拉允许空=假>                 <列表选项键名=firstFieldId列表名称=listOptions1描述=$ {} DES1/>             < /下拉>         < /场>         <字段名称=secondFieldId>             <下拉允许空=假>                 <列表选项键名=secondFieldId列表名称=listOptions描述=$ {} DES2/>             < /下拉>         < /场>

    - 创建test.js:

    $(文件)。就绪(函数(){ $(中选择[名称='firstFieldId'])。改变(函数(){ 更新($(本).VAL()); }); }); 功能更新(ID){     jQuery.ajax({         网址:myRequest,         键入:POST,         数据:{         firstFieldId:ID         },         成功:函数(RES){         VAR数据= res.listOptions;             renderHtml(数据);         }     }); } 函数renderHtml(数据){ VAR Y =; 对于(VAR的X数据){ Y + =<期权价值='+数据[X] .secondFieldId +'>中; Y + =数据[X] .des2 +< /选项>中; } $(中选择[名称='secondFieldId'])HTML(Y)。 }

  • 屏幕:

    <操作> <设置字段=layoutSettings.javaScripts [+ 0]值=/ delys /图片/ JS / logistics.js全球=真/> < /操作>

  • Controller.xml:

    <请求映射URI =myRequest>   <安全身份验证=真正的HTTPS =真/>   <事件类型=服务援引=为myService>< /事件>   <响应NAME =成功TYPE =请求值=json的>< /响应> < /请求地图>

    在为myService返回listOptions将解析为JSON格式。

  • 在共controller.xml JSON请求:

    <请求映射URI =json的>         <安全直接请求=FALSE/>         <事件类型=java的路径=org.ofbiz.common.CommonEvents援引=jsonResponseFromRequestAttributes/>         <响应NAME =成功类型=无/> < /请求地图>

    这是我的路,谢谢!

I'm using drop-down tag but I want to update another fields after selected an option in this. I'm using it in Forms. I know we can using ajax to submit and update but in ftl, I can't find which attribute of field or drop-down can help ?

Thanks!

解决方案

I found a way to resolve this problem. We will use js to post, send a request and get data with json format. Example:

  • my Forms:

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

    - create test.js:

    $(document).ready(function(){
    	$("select[name='firstFieldId']").change(function(){
    		update($(this).val());
    	});
    });
    function update(id) {
        jQuery.ajax({
            url: 'myRequest',
            type: "POST",
            data:{
            	firstFieldId: id
            },
            success: function(res) {
            	var data = res.listOptions;
                renderHtml(data);
            }
        });
    }
    function renderHtml(data){
    	var y = "";
    	for (var x in data){
    		y += "<option value='" + data[x].secondFieldId + "'>";
    		y += data[x].des2 + "</option>";
    	}
    	$("select[name='secondFieldId']").html(y);
    }

  • Screens:

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

    In myService returns listOptions will parse to json format.

  • json request in common-controller.xml:

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

    This is my way, thanks!

这篇关于如何使用Ajax在ofbiz形式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆