jfinal对restful的支持

MR猪 发布于 2012/12/19 16:03
阅读 4K+
收藏 3

@JFinal 你好,想跟你请教个问题:

用表单提交时如何使用restful?还是说表单本来就是和restful相悖的?比如我现在要查询一篇博客“http://www.oschina.net/question/ask?project=JFinal&user=201137”这样的链接风格是restful的吗?如果不是应该如何解决表单提交时符合restful的问题?

例如用JFinal实现上面提到的链接: 

http://www.oschina.net/question/ask/JFinal-201137这样在后台解析的时候用getPara(index)取得相应的project和user的值进行处理是否可行?假如目前project和user的值都是从表单传入的键值对的形式,那么对应的restful的URI应该如何表示这些参数是否忽略name属性,直接取value

加载中
2
cwledit
cwledit

在我理解,restfull的核心有两点一个是以资源为中心,另外一个就是状态的转移的描述。

以资源为中心设计URL风格,比如/user/12 这个URL 不同的请求方法 post,get,put,delete对应的是 创建、读取、更新、删除等不同的操作。

jfinal中针对这样的设计 专门有一个 restfull的的拦截器实现的规则如下:

 * ActionInvocation 中添加 Method method
 *
    The standard definition is as follows:
    index - GET - A view of all (or a selection of) the records
    show - GET - A view of a single record
    add - GET - A form to post to create
    save - POST - Create a new record
    edit - GET - A form to edit a single record
    update - PUT - Update a record
    delete - DELETE - Delete a record
 *
 * GET        /user            --->    index
 * GET        /user/id        --->    show  
 * GET        /user/add        --->    add
 * POST        /user            --->    save    
 * GET        /user/edit/id    --->    edit
 * PUT        /user/id        --->    update
 * DELECT    /user/id        --->    delete



0
饶建龙

首先纠正:restfull

先了解下restfull 是什么?和http !

然后你说得只是其中一种 GET 操作!

0
Anterior
Anterior

引用来自“饶建龙”的答案

首先纠正:restfull

先了解下restfull 是什么?和http !

然后你说得只是其中一种 GET 操作!

restfull?您的纠正是指楼主的单词拼写错了吗?在我目前能找到的所有关于rest的介绍中都称为restful
0
Anterior
Anterior

引用来自“cwledit”的答案

在我理解,restfull的核心有两点一个是以资源为中心,另外一个就是状态的转移的描述。

以资源为中心设计URL风格,比如/user/12 这个URL 不同的请求方法 post,get,put,delete对应的是 创建、读取、更新、删除等不同的操作。

jfinal中针对这样的设计 专门有一个 restfull的的拦截器实现的规则如下:

 * ActionInvocation 中添加 Method method
 *
    The standard definition is as follows:
    index - GET - A view of all (or a selection of) the records
    show - GET - A view of a single record
    add - GET - A form to post to create
    save - POST - Create a new record
    edit - GET - A form to edit a single record
    update - PUT - Update a record
    delete - DELETE - Delete a record
 *
 * GET        /user            --->    index
 * GET        /user/id        --->    show  
 * GET        /user/add        --->    add
 * POST        /user            --->    save    
 * GET        /user/edit/id    --->    edit
 * PUT        /user/id        --->    update
 * DELECT    /user/id        --->    delete



弱弱的问一下,我配置上了Restful这个拦截器以后,在页面访问

http://localhost:8080/user/id   按道理说应该执行show()方法的,可是不知为什么页面返回的是404,服务器端执行的过程是 先调用index()  然后又调用show(),最后报错Resource not fount

JFinal action report -------- 2012-12-24 20:58:18 ------------------------------
Controller  : my.dc.controller.HelloController.(HelloController.java:1)
Method      : index
UrlPara     : 12
Interceptor : com.jfinal.ext.interceptor.Restful.(Restful.java:1)
--------------------------------------------------------------------------------

JFinal action report -------- 2012-12-24 20:58:18 ------------------------------
Controller  : my.dc.controller.HelloController.(HelloController.java:1)
Method      : show
UrlPara     : 12
Interceptor : com.jfinal.ext.interceptor.Restful.(Restful.java:1)
--------------------------------------------------------------------------------
十二月 24, 2012 8:58:18 下午 com.jfinal.core.ActionHandler warn
警告: Resource not found: /user/show/12

就像上面一样 ,执行了两次

JFinal
JFinal
并非执行了两次,只不过在 Restful 这个拦截器中 forwardAction了。可以通过设置断点知道只执行了一个action method
0
Anterior
Anterior

引用来自“前路@……”的答案

引用来自“cwledit”的答案

在我理解,restfull的核心有两点一个是以资源为中心,另外一个就是状态的转移的描述。

以资源为中心设计URL风格,比如/user/12 这个URL 不同的请求方法 post,get,put,delete对应的是 创建、读取、更新、删除等不同的操作。

jfinal中针对这样的设计 专门有一个 restfull的的拦截器实现的规则如下:

 * ActionInvocation 中添加 Method method
 *
    The standard definition is as follows:
    index - GET - A view of all (or a selection of) the records
    show - GET - A view of a single record
    add - GET - A form to post to create
    save - POST - Create a new record
    edit - GET - A form to edit a single record
    update - PUT - Update a record
    delete - DELETE - Delete a record
 *
 * GET        /user            --->    index
 * GET        /user/id        --->    show  
 * GET        /user/add        --->    add
 * POST        /user            --->    save    
 * GET        /user/edit/id    --->    edit
 * PUT        /user/id        --->    update
 * DELECT    /user/id        --->    delete



弱弱的问一下,我配置上了Restful这个拦截器以后,在页面访问

http://localhost:8080/user/id   按道理说应该执行show()方法的,可是不知为什么页面返回的是404,服务器端执行的过程是 先调用index()  然后又调用show(),最后报错Resource not fount

JFinal action report -------- 2012-12-24 20:58:18 ------------------------------
Controller  : my.dc.controller.HelloController.(HelloController.java:1)
Method      : index
UrlPara     : 12
Interceptor : com.jfinal.ext.interceptor.Restful.(Restful.java:1)
--------------------------------------------------------------------------------

JFinal action report -------- 2012-12-24 20:58:18 ------------------------------
Controller  : my.dc.controller.HelloController.(HelloController.java:1)
Method      : show
UrlPara     : 12
Interceptor : com.jfinal.ext.interceptor.Restful.(Restful.java:1)
--------------------------------------------------------------------------------
十二月 24, 2012 8:58:18 下午 com.jfinal.core.ActionHandler warn
警告: Resource not found: /user/show/12

就像上面一样 ,执行了两次

真的好像@ JFinal
0
Anterior
Anterior

引用来自“前路@……”的答案

引用来自“cwledit”的答案

在我理解,restfull的核心有两点一个是以资源为中心,另外一个就是状态的转移的描述。

以资源为中心设计URL风格,比如/user/12 这个URL 不同的请求方法 post,get,put,delete对应的是 创建、读取、更新、删除等不同的操作。

jfinal中针对这样的设计 专门有一个 restfull的的拦截器实现的规则如下:

 * ActionInvocation 中添加 Method method
 *
    The standard definition is as follows:
    index - GET - A view of all (or a selection of) the records
    show - GET - A view of a single record
    add - GET - A form to post to create
    save - POST - Create a new record
    edit - GET - A form to edit a single record
    update - PUT - Update a record
    delete - DELETE - Delete a record
 *
 * GET        /user            --->    index
 * GET        /user/id        --->    show  
 * GET        /user/add        --->    add
 * POST        /user            --->    save    
 * GET        /user/edit/id    --->    edit
 * PUT        /user/id        --->    update
 * DELECT    /user/id        --->    delete



弱弱的问一下,我配置上了Restful这个拦截器以后,在页面访问

http://localhost:8080/user/id   按道理说应该执行show()方法的,可是不知为什么页面返回的是404,服务器端执行的过程是 先调用index()  然后又调用show(),最后报错Resource not fount

JFinal action report -------- 2012-12-24 20:58:18 ------------------------------
Controller  : my.dc.controller.HelloController.(HelloController.java:1)
Method      : index
UrlPara     : 12
Interceptor : com.jfinal.ext.interceptor.Restful.(Restful.java:1)
--------------------------------------------------------------------------------

JFinal action report -------- 2012-12-24 20:58:18 ------------------------------
Controller  : my.dc.controller.HelloController.(HelloController.java:1)
Method      : show
UrlPara     : 12
Interceptor : com.jfinal.ext.interceptor.Restful.(Restful.java:1)
--------------------------------------------------------------------------------
十二月 24, 2012 8:58:18 下午 com.jfinal.core.ActionHandler warn
警告: Resource not found: /user/show/12

就像上面一样 ,执行了两次

@JFinal 也就是说虽然控制台显示得是两次,但是实际上只执行一次。在源码中直接给原有action返回了404,那么执行了show()方法后为何页面为何依然是404呢?
采姑娘的小萝卜头
采姑娘的小萝卜头
哥们,你的这个问题解决了么?我现在2.2的版本还有这个问题。。好奇怪!!!
返回顶部
顶部