diff --git a/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java b/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java index 7bba12d32..0d919504c 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java @@ -289,7 +289,10 @@ public class DefaultActionMapper implements ActionMapper { ConfigurationManager configManager) { ActionMapping mapping = new ActionMapping(); String uri = getUri(request); - + + int indexOfSemicolon = uri.indexOf(";"); + uri = (indexOfSemicolon > -1) ? uri.substring(0, indexOfSemicolon) : uri; + uri = dropExtension(uri, mapping); if (uri == null) { return null; diff --git a/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java b/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java index 3404b5257..38ec51469 100644 --- a/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java +++ b/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java @@ -181,6 +181,18 @@ public class DefaultActionMapperTest extends StrutsTestCase { ActionMapping mapping = mapper.getMapping(req, configManager); assertEquals("/my/namespace/actionName.action", mapper.getUriFromActionMapping(mapping)); } + + public void testGetUriWithSemicolonPresent() throws Exception { + req.setupGetParameterMap(new HashMap()); + req.setupGetRequestURI("/my/namespace/actionName.action;abc=123rty56"); + req.setupGetServletPath("/my/namespace/actionName.action;abc=123rty56"); + req.setupGetAttribute(null); + req.addExpectedGetAttributeName("javax.servlet.include.servlet_path"); + + DefaultActionMapper mapper = new DefaultActionMapper(); + ActionMapping mapping = mapper.getMapping(req, configManager); + assertEquals("/my/namespace/actionName.action", mapper.getUriFromActionMapping(mapping)); + } public void testGetUriWithMethod() throws Exception { req.setupGetParameterMap(new HashMap());