Hi team,

We are getting the below attached exceptions when we are using
struts2-core-6.1.2.jar. We tested the action class using
struts2-core-2.5.22.jar and struts2-core-2.5.30.jar. We are getting response
properly when using those versions of struts. But when using
struts2-core-6.1.2.jar, we are getting response for the post request of the
url in postman, but for the same url if we make a post request using xhr in
the browser we are getting the below attached exception. Also if we post to
the url using xhr with http protocol, we are getting proper response but we
are getting the below exception if we make a post request using xhr with
https protocol. Can you please explain why this behaviour is and how to get
this fixed?

Exception :


- 127.0.0.1 test - 13 - 68 com.company.mfw.Starter$SysLogStream log
INFO "10-05-2023
11:34:57:610" - "11:34:57.609
[/company/test/sampleresponse-1683698697020_###_https-jsse-nio-9443-exec-4]
ERROR org.apache.struts2.dispatcher.Dispatcher - Could not find action or
result: /company/test/sampleresponse
com.opensymphony.xwork2.config.ConfigurationException: No result defined
for action com.struts.sample.action.StrutsAction and result 403
at
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:380)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:284)
~[struts2-core-6.1.2.jar:6.1.2]
at
org.apache.struts2.interceptor.CoopInterceptor.intercept(CoopInterceptor.java:57)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
org.apache.struts2.interceptor.CoepInterceptor.intercept(CoepInterceptor.java:55)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:143)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:152)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:152)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:202)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:67)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:133)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:89)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:242)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:101)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:142)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:161)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:175)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
org.apache.struts2.interceptor.csp.CspInterceptor.intercept(CspInterceptor.java:47)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:140)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:209)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:229)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at com.opensymphony.xwork2.DefaultActionInvoc" - - - - - - 1683698697610 -
- - - - - struts -
thread_name=/company/test/sampleresponse-1683698697020_###_https-jsse-nio-9443-exec-4
logger_name=SYSOUT
- 127.0.0.1 test - 13 - 68 com.company.mfw.Starter$SysLogStream log
INFO "10-05-2023
11:34:57:610" - "ation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:196)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
~[struts2-core-6.1.2.jar:6.1.2]
at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
~[struts2-core-6.1.2.jar:6.1.2]
at
org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:48)
~[struts2-core-6.1.2.jar:6.1.2]
at
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:630)
[struts2-core-6.1.2.jar:6.1.2]
at
org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79)
[struts2-core-6.1.2.jar:6.1.2]
at
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:140)
[struts2-core-6.1.2.jar:6.1.2]
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
[catalina.jar:?]
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
[catalina.jar:?]


Struts Action Mapping :


<package name="default" extends="struts-default" namespace="/company">
<action name="/{service:[a-z0-9_\-]+}/sampleresponse" class=
"com.struts.sample.action.StrutsAction">
<result name="success">/jsp/response.jsp</result>
<result name="failure">/jsp/failure.jsp</result>
</action>
</package>


Class File Corresponding to the action mapping :

package com.struts.sample.action;

import java.io.IOException;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.action.ServletRequestAware;
import org.apache.struts2.action.ServletResponseAware;
import org.json.JSONObject;
import org.apache.http.HttpStatus;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.util.ValueStack;

public class StrutsAction extends ActionSupport implements
ServletRequestAware, ServletResponseAware {

private static final long serialVersionUID = 1L;

public HttpServletRequest request;
public HttpServletResponse response;

private String action;
private String actionParams;
private String module;

private ValueStack valueStack;
private HashMap<String,Object> valueMap;

@Override
public void withServletResponse(HttpServletResponse response) {
this.response = response;
}

@Override
public void withServletRequest(HttpServletRequest request) {
this.request = request;
}

public void setModule(String module){
this.module = module;
}

public String getModule(){
return module;
}

public void setActionParams(String actionParams){
this.actionParams = actionParams;
}

public String getActionParams(){
return actionParams;
}
public void setAction(String action){
this.action = action;
}

public String getAction(){
return action;
}

public void addToStack(String key,Object value){
HashMap<String, Object> vMap = getValueMap();
vMap.put(key, value);
}

public void addToStack(HashMap<String,Object> map){
ValueStack vStack = getValueStack();
vStack.push(map);
}

private HashMap<String,Object> getValueMap(){
if(valueMap == null){
valueMap = new HashMap<String,Object>();
getValueStack().push(valueMap);
}
return valueMap;
}

private ValueStack getValueStack(){
if(valueStack == null){
valueStack = ActionContext.getContext().getValueStack();
}
return valueStack;
}

public String execute() throws IOException
{
if(request.getParameter("action") != null)
{
JSONObject responseJSON = new JSONObject();
responseJSON.put("key", "value");
response.setStatus(HttpStatus.SC_OK);
response.setContentType("application/json");
response.getWriter().write(responseJSON.toString());
return null;
}
return null;
}

}


Thanks & Regards,
Vishnu Mahendiren

Reply via email to