Home > FAQs |

Apache Struts 2 Documentation
FAQs
Edit Page Browse Space Add Page Add News

Adding New FAQs

Each FAQ should be cross-referenced from a relevant page in one of the guides. (If a relevant page in the guide is missing, then we probably need to create one!) Each question should be a new page. Answers should be concise and focused. If an answer seems long, or seems like it could relate to more than one section, then the question might be addressing more than one concern.

FAQs can also be "mini-HOWTOs". As long as the question and answer are focused on a single concern, length is not an issue.

### Migrating

- See the Migration Guide

### General

- ﻿Where do we get the latest version the framework?
- What are some of the framework's best features?
- What are the fundamental differences between Struts and JSF?
- Can you suggest an elevator pitch?

### HOWTO

- How can we display dynamic or static images that can be provided as an array of bytes?
- How can we return a text string as the response?
- How can we test applications?
- How can we test Actions?
- How do we upload files?
- How do we download files within the framework?
- ﻿How can we force the Action Mappings (struts.xml) to reload?
- How can I test my action output, validation or the action execution outside a container?

### Configuration

- Can we break up a large struts.xml file into smaller pieces?
- Parameters in configuration results
- Make Struts throw exceptions on missing properties, or log them

### Accessing Resources

- How do we get access to the session?
- ﻿How do we get invalidate the session?
- How can we access the HttpServletRequest?
- How can we access the HttpServletResponse?
- How can we access request parameters passed into an Action?
- How do we access static parameters from an Action?
- Can we access an Action's Result?
- ﻿How do I obtain security details (JAAS)?
- ﻿How do we access the Action Invocation, action name or namespace from a view?

### Per-Page Settings

- Can I change theme on a per-page basis?
- Can I change templateDir on a per-page basis?
- Can I change templateSuffix on a per-page basis?

### Interceptors

- Why isn't our Prepare interceptor being executed?
- Why does my setter not get called by the Params interceptor?
- How do we configure an Interceptor to be used with every Action?

### Validation

- Why is my action returning "input" when the form is filled out correctly?
- How do I use messages from within the validator?
- How can I fix the "Attribute 'short-circuit'" error message?
- How do we repopulate controls when validation fails?
- How do I unit test my action's validation logic?
- Why does WW ignore my message when its enclosed in CDATA?

### Localization

- How do we change locales?
- How do I set a global resource bundle?
- ﻿How do I decouple XWork LocalizedTextUtil global resource bundle loading from serlvets?
- How do I add I18N to a UI tag, like the textfield tag?
- Can I add I18N outside the Action's context?
- How to support UTF-8 URIEncoding with Tomcat?
- How do I enable encoding in my forms?
- How to escape special chars in resource bundles?

### Type Conversion

- How do I change the invalid input error message for a particular field?
- Why is the application logging a warning that the Compound Root cannot find a particular Object with a particular property?

### Value Stack

- What are the default variables in the value stack?

### Tags

- Why do the form tags put table tags around controls?
- How can I put a String literal in a Javascript call, for instance in an onChange attribute?
- Why won't the 'if' tag evaluate a one char string?
- Why does FreeMarker complain that there's an error in my user-directive when I used JSP Tag?
- Can an action tag run another method apart from the default execute method?
- Why didn't my action tag get executed when I have validation errors?
- Why are request parameters appended to our hyperlinks?
- Why doesn't the if tag evaluate test="#parameters.someParam ... " properly
- How do I render a single radio button?
- ﻿Why do I get a javax.el.ELException when using OGNL with JSP2.1?
- Why can't I use JSTL-style EL expressions in Struts tags?
- How can I iterate over a range, like with JSTL's forEach tag?

### POJOs

- Should the framework call getModel multiple times as a page renders?

### Spring

- How can we create our Action objects from the Spring configuration?
- Why would we want to create Action objects from the Spring configuration?

### Velocity

- I'm trying to run the example in the tutorial on Tomcat, and it can't instantiate the VelocityEngine

### Ajax/Dojo

- IE showing a prompt saying "This page contains both secure and nonsecure items" when using dojo

### Issues in Specific Environments

- Weblogic 8.1
- JRockit
- Multiple Struts 2 wars in a single ear
- Google App Engine (GAE)

## Extensions

- Does the framework integrate with Hibernate?
- Can we use JSTL with the framework?
- Can we use JUnit with the framework?
- Can we use TestNG with the framework?
- How can we schedule Quartz jobs?
- Can we use Acegi Security with the framework?

### Portlet Support(JSR168)

- Which portal servers are supported?
- How to build the portlet WAR for a specific portal server

### Migrating

- Why is my action unavailable?

## Errata?

To suggest a change or a correction to any part of the documentation, log in and leave a comment on the appropriate page. We are always looking for help with the documentation!

## Next: Cookbook

Children Show Children Hide Children
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)
$page.link($child) (Apache Struts 2 Documentation)