Playframework 在带有 ajax 的视图中使用 jeditable

Posted

技术标签:

【中文标题】Playframework 在带有 ajax 的视图中使用 jeditable【英文标题】:Playframework using jeditable in the view with ajax 【发布时间】:2012-10-17 15:20:17 【问题描述】:

我正在使用 play 1.2.5。在我的一个观点中,我有一个数据表,其中一列是可编辑的。为此,我使用 jquery.dataTables.js 和 jquery.jeditable.js 插件。

现在,当我在字段中输入新值时,ajax 调用出现问题。我创建了一个动作,每次编辑一行时都应该调用它,但这不起作用。不会调用该操作,有人可以看到我的错误吗?

谢谢

这是我的操作,首先我想看看它被调用了

    public static void configurationChange(SendAllSysParameter para)
    Logger.info( "incoming configuration change", null );
    

这是我的看法:

#extends 'main.html' /

#set title:'Sendall Configuration Page' /

#script 'jquery.dataTables.js'/
#stylesheet 'demo_page.css' /
#stylesheet 'jquery.dataTables.css' /
#script 'jquery.jeditable.js' /

<div class="pdx_std_north_panel">
    <table id="table_id" class="display">
    <thead>
        <th>Property</th>
        <th>Value</th>      
    </thead>
    <tbody>
        #list items:paras, as:'elem' 
        <tr id="$elem.sendAllKey">
            <td id="$elem_index">$elem.sendAllKey</td>
            <td id="$elem_index">$elem.sendAllValue</td>                                
        </tr>       
        #/list
    </tbody>    
    </table>        
    <script type="text/javascript">

        $(document).ready(function()
            var oTable = $('#table_id').dataTable();
            //alert("Test2");
            var configurationChangeRoute = #jsRoute @Application.configurationChange(':element') /;
            console.log('configurationChangeRout mit jsRoute-Tag: ' + configurationChangeRoute.url);
            var configurationChangeAction = #jsAction @Application.configurationChange(':element')/; 
            console.log('configurationChangeAction mit jsActionTag: ' + configurationChangeAction);
            //alert(configurationChangeRoute.url);
            //alert(configurationChangeAction);
            /* Apply the jEditable handlers to the table */
            $('td:eq(1)', oTable.fnGetNodes()).editable( configurationChangeAction, 

                "callback": function( sValue, y ) 
                    console.log('callback with svalue ' + sValue + ' and y ' + y);
                    var aPos = oTable.fnGetPosition( this );
                    oTable.fnUpdate( sValue, aPos[0], aPos[1] );
                ,

                "submitdata": function ( value, settings ) 
                    console.log('submitdata');
                    return 
                        "row_id": this.parentNode.getAttribute('id'),
                        "column": oTable.fnGetPosition( this )[2]
                    ;
                ,
                "height": "14px"
             );

还有我的模特:

package models;

import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

import play.db.jpa.GenericModel;
import play.db.jpa.Model;

@Entity
@Table(name="SendAll_SysParameter")
public class SendAllSysParameter extends GenericModel


    @Id
    @Column(name = "sendAllKey", unique = true, nullable = false)
    public String sendAllKey;

    @Column(name = "sendAllValue")
    public String sendAllValue;

    @Column(name = "sendAllDate", nullable = false, length = 23)
    public Timestamp sendAllDate;


【问题讨论】:

我发现了问题,我将我的 ajax url 的路由声明为 GET,但它是 POST,所以它没有被 play 找到。错误日志是正确的;-) 请将其添加为答案并接受它:) 【参考方案1】:

我发现了问题,我将我的 ajax url 的路由声明为 GET,但它是 POST,所以它没有被 play 找到。错误日志是正确的;-)

【讨论】:

以上是关于Playframework 在带有 ajax 的视图中使用 jeditable的主要内容,如果未能解决你的问题,请参考以下文章

如何在 playframework 中提交带有多维数组的表单并将变量传递给控制器​​的操作

带有经典查询分隔符的 PlayFramework 1.x 路由

Playframework 2.4 单例,对象

Playframework + Morphia + MongoDb + ElasticSearch = Disater?

使用数据 URI 将图像上传到使用 Java(PlayFramework-2.6 或纯 Java)的服务器

Play Framework 1.2.4 在异步线程中同步作业:可能吗?