これは JSP の下にあります。
<%!
public PortletURL getActionURL(RenderResponse response, String action) {
PortletURL portleturl = response.createRenderURL();
try {
portleturl.setWindowState(LiferayWindowState.EXCLUSIVE);
portleturl.setParameter("struts_action", "helloForm");
} catch (Exception e) {
e.printStackTrace();
}
return portleturl;
}
%>
<%
PortletURL helloFormssss = getActionURL(renderResponse, "helloForm");
System.out.println("The URL is helloFormssss " + helloFormssss);
%>
この URL を jQuery AJAX に渡す:
function my_button_handler() {
jQuery.ajax({
type: "POST",
url: "helloFormssss",
success: function(msg){
alert( "Data Saved: " + msg );
}
});
}
これは私のAction
クラスです
public class Struts2Action extends DefaultActionSupport {
String name = null;
public String getPOPChartData() throws Exception {
// Enter business logic here
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
String name = ParamUtil.getString(request, "namer");
System.out.println("The name is " + name);
PrintWriter writer = response.getWriter();
writer.print("Hi");
return ActionSupport.SUCCESS;
}
}
これはstruts.xm
l ファイル内にあります。
<action name="helloForm" class="com.robisoft.portlet.struts.action.Struts2Action" method="getPOPChartData">
<result name="input">/WEB-INF/view/index.jsp</result>
<result name="success">/WEB-INF/view/result.jsp</result>
</action>
URLはhelloFormssssです
http://localhost:8086/web/guest/home?p_p_id=HelloStruts_WAR_HelloStrutsportlet_INSTANCE_yip2vomViZSU&p_p_lifecycle=0&p_p_state=exclusive&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_HelloStruts_WAR_HelloStrutsportlet_INSTANCE_yip2vomViZSU_struts_action=helloForm
これは、サーバーコンソール内で発生している例外です
14:31:37,973 ERROR [Jsr168Dispatcher:38] アクションを実行できませんでした。
java.lang.IllegalStateException: com.robisoft.portlet.struts.action.Struts2Action.getPOPChartData(Struts2Action.java ) の
org.apache.struts2.portlet.servlet.PortletServletResponse.getWriter(PortletServletResponse.java:169) のイベント フェーズでは許可されません
:56)
sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド)
で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) で
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) で java.lang.reflect.Method.invoke(Method.java:597) で com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452) でcom.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254) com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java: 176) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) で com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) で com.opensymphony.xwork2.com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java: 98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation) .java:248) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207) で com.opensymphony.xwork2.interceptor.MethodFilterInterceptor で。インターセプト (MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.Java:207) .interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) で com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) で com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) でcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) の org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) の com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) org.apache .struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) ) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) で com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) で com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:270) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor) .java:171) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletInterceptor.java:164) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java) :248) com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) で com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) で org.apache.struts2。org.apache.struts2.portlet.interceptor.PortletStateInterceptor.intercept(PortletStateInterceptor.java: 52) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) で org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) で org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher .serviceAction(Jsr168Dispatcher.java:451) org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher.processAction(Jsr168Dispatcher.java:298) com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:70) com. liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:48) at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:93) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)