1

これは 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.xml ファイル内にあります。

<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)

4

0 に答える 0