【liferay】6、关于liferay中使用requestMapping映射地址提交表单

1、接着上一篇博客,从新在定义一下页面

<%@ page contentType="text/html; charset=utf-8" language="java"
    pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<meta http-equiv="expires" content="0">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">

<portlet:defineObjects />
<!-- 获取根目录 -->
<!-- 这个是用来定义一个参数 -->
<c:set var="basepath" value="${pageContext.request.contextPath }" />

这个spring portlet 的message为
${message }

<form action="${basepath }/samplecontroller/testac" name="<portlet:namespace />fm" id="<portlet:namespace />fm"
    method="post">
    <ul>
        <li>
            <input type="text" id="firstParams" />
        </li>
        <li>
            <input type="submit" value="直接提交" />
        </li>
    </ul>
</form>

2、修改spring配置文件

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-4.3.xsd">

    <context:component-scan base-package="com.xiaof.springportlet.*"></context:component-scan>

    <bean id="sampleController" class="com.xiaof.springportlet.controller.SampleController">
        <!--
            这里可以配置的属性有4个,原谅我的英语不好,基本都是百度翻译,
            requireSession: 标识这个控制器是否需要一个session来工作,这个功能适用所有controller,
                当前controller使用的不是当前控制器的session的时候,抛出SessionRequiredException
            synchronizeSession(synchronizeOnSession 4.3版本):如果需要controller在用户回话上保持同步指定这个,如果指定此变量扩展控制器覆盖handlerenderrequestinternal(..)
                和handleactionrequestinternal(..)方法,并将同步用户的会话。
                注意实际应该是:synchronizeOnSession而不是synchronizeSession
            renderWhenMinimized:如果您希望控制器在portlet处于最小化状态时实际呈现视图,请将其设置为true。默认情况下,
                此设置为false,portlet,在最小化状态,不显示任何内容。
            cacheSeconds:当您想要控制器重写portlet定义的默认缓存过期时,在这里指定一个正整数。
                默认情况下,它被设置为- 1,不会改变默认缓存。将其设置为0将确保结果永远不会缓存。

            最后除了最后一个参数是给整数,其余参数都是Boolean类型
         -->
        <property name="cacheSeconds" value="120" />
    </bean>

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

</beans>

3、修改controller类

package com.xiaof.springportlet.controller;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.portlet.ModelAndView;
import org.springframework.web.portlet.bind.annotation.ActionMapping;
import org.springframework.web.portlet.bind.annotation.RenderMapping;
import org.springframework.web.portlet.mvc.AbstractController;

/**
 * 测试spring-portlet功能
 * @author xiaof
 *
 * 所有spring portlet的控制器都继承于AbstractController
 * 这里requestmapping模式必须为view模式,对应portlet中的portlet-mode
 */
@RequestMapping("view")
@Controller(value="/samplecontroller")
public class SampleController extends AbstractController {

    /**
     * 注意这里使用的是@RenderMapping,可以不用
     * 因为这里是handleRenderRequestInternal方法,默认会被执行
     */
//    @RenderMapping
    public ModelAndView handleRenderRequestInternal(RenderRequest request,
            RenderResponse response) throws Exception {

        System.out.println("test spring portlet!!!");
        ModelAndView mav = new ModelAndView("springmvc-sample/view");
        mav.addObject("message", "</br>hello world spring portlet!");

        return mav;
    }

    @Override
    public void handleActionRequest(ActionRequest request,
            ActionResponse response) throws Exception {
        // TODO Auto-generated method stub
        super.handleActionRequest(request, response);
    }

    @RenderMapping(value="/testren", params="myaction=testrender")
    public String testRequestMapping(RenderRequest request,
            RenderResponse response) {
        System.out.println("这里进入spring自定义render方法");
        return "test rendermapping";
    }

    @ActionMapping(value="/testac", params="myaction=testaction")
    public String testActionMapping(ActionRequest request,
            ActionResponse response) {
        System.out.println("这里进入spring自定义action方法");
        return "test actionmapping";
    }

}

原文地址:https://www.cnblogs.com/cutter-point/p/8254054.html

时间: 2024-11-01 20:10:40

【liferay】6、关于liferay中使用requestMapping映射地址提交表单的相关文章

struts2中token防止重复提交表单

struts2中token防止重复提交表单 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 2015年7月12日 11:52:32 星期日 http://fanshuyao.iteye.com/ 第一步:在表单中加上<s:token></s:token>

jsp中普通按钮如何提交表单

jsp中普通按钮如何提交表单方法1: <form action = "提交的地址">         <input type="submit" value="提交">        </form>方法2:<form action = "提交的地址">        <input type="button" value="提交" onc

KindEditor使用过程中,用JQ提交表单时,获取不到编辑器的内容

首先要说明的是.在使用提交button直接提交时.编辑器的内容是能够正常获取的,而使用 jq或js ,如$("#form").submit(),提交时,则编辑器的内容是无法获取的.这里在 kindEditor官方中提出的解决方式为: 在编辑器创建时,添加属性:afterBlur:function(){this.sync();} 这里看一个完整的实例: var editor; KindEditor.ready(function(K) { editor = K.create('textar

jquery中使用$(#form).submit()提交表单无效原因分析及解决Script

今天写了一个表单验证,验证的时候没有任何问题,但是页面提交不了,很诡异,然后各种百度,查了一下的原因是input的id不能为submit 注意:提交表单的时候,input的id不能为submit <dl> <dd> <label>角色名称:</label> <input type="text" id="role_name" name="name" style="text-indent

SpringMVC中的异步提交表单

1.前言 近期在做一个项目,前台框架用的是EasyUI+SpringMVC,因为对SpringMVC不太了解,所以刚開始接触的时候有点吃力,在此通过一个EasyUi中的DataGrid表格来总结一下.  2.SpringMVC中的View向控制器传參 在SpringMVC中,View怎样向控制器传參数呢? 尤其是Form表单提交的时候,详细有例如以下几种方式 2.1 HttpServletRequest 能够通过getParameter()方法来获取前台传过来的參数 2.2 Form表单绑定 /

在javascript中关于submit和button提交表单区别

原文:在javascript中关于submit和button提交表单区别 原文来自:http://www.jb51.net/article/42236.htm submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了,submit和button,二者都以按钮的形式展现,看起来都是按钮,所不同的是type属性和处发响应的事件上. 1. 如果表单在点击提交按钮后需要用JS进行处理(包括输入验证)后再提交的话,通常都必须把submit改成button,即取消其自动提交的

ASP.NET MVC中使用Session来保持表单的状态

本篇实践在ASP.NET MVC 4下使用Session来保持表单的状态. 本篇的源码在这里: https://github.com/darrenji/KeepFormStateUsingSession 如上,输入俱乐部名称,点击"添加球员",输入球员名称.我们希望,点击"到别的地方转转"跳转到另外一个视图页,当再次返回的时候能保持表单的状态. 点击"到别的地方转转"跳转到另外一个视图页如下: 再次返回,表单的状态被保持了: 点击"提交

(转)在javascript中关于submit和button提交表单区别

原文来自:http://www.jb51.net/article/42236.htm submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了,submit和button,二者都以按钮的形式展现,看起来都是按钮,所不同的是type属性和处发响应的事件上. 1. 如果表单在点击提交按钮后需要用JS进行处理(包括输入验证)后再提交的话,通常都必须把submit改成button,即取消其自动提交的行为, 否则,将会造成提交两次的效果,对于动态网页来说,也就是对数据库操作

php中限制ip段访问、禁止ip提交表单的代码

在需要禁止访问或提交表单的页面添加下面的代码进行判断就可以了. 注意:下边只是一个PHP限制IP的实例代码,如果您打算应用到CMS中,请自行修改. <?php /加IP访问限制 if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $userip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR