blob: 011b0157335d5da2e970d259cd9f871bed774bcb [file] [view]
---
layout: default
title: Converting application from Codebehind to Convention Plugin (WIP)
parent:
url: index
title: Convention plugin
---
# Converting application from Codebehind to Convention Plugin
## Changes required
- Replace `org.apache.struts2.config.Namespace` with `org.apache.struts2.convention.annotation.Namespace`
- Replace `org.apache.struts2.config.Results` with `org.apache.struts2.convention.annotation.Results`
- Replace `org.apache.struts2.config.Result` with `org.apache.struts2.convention.annotation.Result`
- Update `@Result` uses to use result **name** instead of `Class<Result>`
- Update `@Result` uses to use **location** instead of value attribute
- Update `web.xml` and remove Codebehind params from filter
- Update CamelCase action results and references to match Convention. For example:
```
Previously in Codebehind:
Given an action named AnExampleAction, a request to /anExample -> AnExampleAction.execute() -> > anExample-index.ftl
Now in Convention:
Given an action named AnExampleAction, a request to /an-example -> AnExampleAction.execute() -> an-example-index.ftl
```
## When REST plugin is used
Add these constants to `struts.xml`
```xml
<constant name="struts.convention.action.suffix" value="Controller"/>
<constant name="struts.convention.action.mapAllMatches" value="true"/>
<constant name="struts.convention.default.parent.package" value="rest-default"/>
<constant name="struts.convention.package.locators" value="example"/>
```