2017-06-26 24 views
1

我使用struts 2.32,這是代碼。struts2.3.32方法前綴不工作

--methodPrefix.jsp--

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<%@ taglib prefix="s" uri="/struts-tags" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 
</head> 
<body> 
    <s:form action="methodPrefix" theme="simple"> 
     name: <br/> 
     <s:textfield name="name"/> 
     <br><br> 
     <s:submit value="Create Person"/> 
     <s:submit name="method:cancel" value="Cancel"/> 
    </s:form> 
</body> 
</html> 

--MethodPrefixAction.java--

public class MethodPrefixAction 
    { 
     private String name; 
     private String message; 

     public String execute() throws Exception 
     { 
      message = name + " create"; 
      return "success"; 
     } 
     public String cancel() throws Exception 
     { 
      message = "cancel"; 
      return "success"; 
     } 

     public String getName() { 
      return name; 
     } 
     public void setName(String name) { 
      this.name = name; 
     } 
     public String getMessage() { 
      return message; 
     } 
     public void setMessage(String message) { 
      this.message = message; 
     } 
    } 

--struts.xml--

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> 
<struts> 
    <constant name="struts.mapper.action.prefix.enabled" value="true" /> 

    <package name="default" extends="struts-default" namespace=""> 
     <action name="goMethodPrefixPage"> 
      <result>/chapter4/methodPrefix.jsp</result> 
     </action> 
     <action name="methodPrefix" class="example.chapter4.MethodPrefixAction"> 
      <result>/chapter4/methodPrefixResult.jsp</result> 
     </action> 
    </package> 
</struts> 

當我把取消按鈕,它不調用cancel方法,只是調用execute方法。

我不知道爲什麼方法前綴不起作用。

我搜索了很多,我知道方法前綴配置是支柱2.32,所以我用恆虛默認.....但不起作用

+0

嘗試使用'

+0

它不起作用。只是錯誤發生在並且雙方都可以取消。 – Rikimaru

回答

0

這個常數

<constant name="struts.mapper.action.prefix.enabled" value="true" /> 

作品action:前綴,不是method:前綴。所以你應該使用action屬性來提交標籤。

<s:submit action="cancel" value="Cancel"/> 
+0

那我該如何使用方法前綴? – Rikimaru

+0

爲方法前綴您應該啓用DMI,它的默認情況下爲了安全而禁用,如果您想自行啓用它的風險請參閱[this](https://stackoverflow.com/a/20772170/573032)回答 –

0

This tutorial解釋它和this tutorial展示瞭如何做驗證

方法MethodPrefixAction.execute應返回successcancel字符串。

struts.xml可以用戶重定向到基於返回的字符串不同的網頁上:只有

<action name="methodPrefix" class="example.chapter4.MethodPrefixAction"> 
      <result name="success">/chapter4/methodPrefixResult.jsp</result> 
      <result name="cancel">/chapter4/methodPrefix.jsp</result> 
     </action> 
+0

不能再使用方法前綴? – Rikimaru

相關問題