如果你要在action里定义result到指定的jsp,这个业务虽然用的很频繁但是在convention里却不是那么方便。你必须在你跳转的action代码里写上annotations来定义。下面是一段示例代码:
@ResultPath("/WEB-INF/content/")
public class GroupAction extends ActionSupport
{
private String userName = null;
@Action(value="/group/showTree",results={@Result(name="showTree",location="test.jsp",type="dispatcher")})
public String showTree()
{
this.setUserName("青林科技");
System.out.println("撒旦法萨达发士大夫撒的");
return "showTree";
}
@Action(value="/group/showGrid",results={@Result(name="showGrid",location="test.jsp",type="redirect")})
public String showGrid()
{
this.setUserName("青林科技abc");
System.out.println("撒旦法萨达发士大夫撒的abc");
return "showGrid";
}
@Action(value="/group",results={@Result(name=SUCCESS,location="http://baidu.com",type="redirect")})
public String execute()
{
return SUCCESS;
}
public String getUserName()
{
return userName;
}
public void setUserName(String userName)
{
this.userName = userName;
}
}
@ResultPath("/WEB-INF/content/")是表明result的基础目录;如果你已经在struts.xml里定义了:
<constant name="struts.convention.result.path" value="/WEB-INF/content/"/>
那么就不需要再在代码里写上注解标明了。
那
么你result的jsp就要在这个目录下面。但是仅限于你的result的type="dispatcher"的时候。type="redirect"
他还是会去应用的根目录找jsp这个就不得解了,测试结果是这样。这里必须解释下result里的几个type常量含义我现在只知道四个:
dispatcher:重定向;
redirect:请求转发;
chain:不清楚含义,好像只针对action不能用于跳转jsp;
缺省:功能同dispatcher。
所有上面的那个问题为什么不行就有了另外一个逻辑的排除方法:因为redirect是重定向所以他不可以访问到WEB-INF/里的的资源,所有他也不支持@ResultPath的定义咯。呵呵牵强了。
@Action(value="/group/showTree",results={@Result(name="showTree",location="test.jsp",type="dispatcher")})
这
样写还有个问题。如果把test.jsp放在/WEB-INF/content/下面,result是找不到test.jsp的,因为他会去找/WEB-
INF/content/group/test.jsp这个文件,因为action的名字value="/group
/showTree",convention是希望我们在开发的时候类模块的包名跟视图模块的包名相同,这确实有好处也清楚明了。但是不能忽略特殊情况,
这里有两种解决方法:1,修改location="/test.jsp"成这样;2,修改value="/showTree"成这样。ok
分享到:
相关推荐
在默认情况下,ConventionPlugin会预设所有结果页面均位于`WEB-INF/content`目录下,当然,此路径可通过struts的properties文件中的`struts.convention.result.path`属性进行自定义。 当我们在浏览器中访问`...
2. **结果页面路径**:默认情况下,所有结果页面都存储在`WEB-INF/content`目录下,但可以通过设置`struts.convention.result.path`属性自定义路径。例如,设置`<constant name="struts.convention.result.path" ...
默认情况下,结果页面位于`WEB-INF/content`目录下,但可以通过`struts.convention.result.path`属性自定义。 4. **命名空间约定**: - 包名会被映射为命名空间(namespace)。例如,`com.example.actions`可能...
Convention 插件可以通过设置 struts.convention.action.name.separator 来配置 Action 类名路径分割规则。例如: <constant name="struts.convention.action.name.separator" value="-" /> 这样,UserAction 将...
但有了Convention插件,只要Action类名遵循特定的规则(通常是`com.example.project.action.MyAction`),Struts2就能自动将URL路径映射到对应的Action上。 2. **结果页面自动匹配**:类似地,如果Action执行后返回...
例如`HelloWorld`Action的默认结果可能是`hello-world.jsp`或`hello-world.ftl`,这些文件通常位于`WEB-INF/content`目录下,但可以通过配置`struts.convention.result.path`自定义路径。 3. **类名到URL转换**:...
针对常见错误,Convention提供了一系列排查技巧,帮助开发者迅速定位问题所在。 #### 总结 Struts2-Convention插件极大简化了Struts2应用的开发与维护,通过约定优于配置的原则,减少了繁琐的XML配置需求,使...
`struts.convention.package.locators`定义了查找Action的基包路径,`struts.convention.action.mapAllMatches`使所有匹配的方法都被映射,`struts.convention.result.path`设置了结果页面的默认路径。 在 ...
2. **设置配置**:在struts.xml文件中启用Convention插件,并指定扫描的包路径。 3. **编写Action类**:创建Action类,遵循Convention的命名规则,例如`@Action("save")`表示该方法映射到"save"这个URL。 4. **添加...
- Convention插件还支持使用Java注解进一步定制Action的行为,如`@Action`、`@Result`等,可以用来覆盖默认的Action映射和结果配置。 6. **动态方法调用** - 如果Action类没有声明任何方法,Convention插件将尝试...
默认情况下,结果页面位于 `WEB-INF/content` 目录下,但可以通过 `struts.convention.result.path` 属性自定义。 3. **类名到URL的转换**:类名通常被转换为小写的URL,如 `MyAction` 对应 `my-action`。 4. **...
通过在`struts.xml`中配置`<convention-default-result-type>`或`<convention-result-type-mapping>`元素,可以自定义结果类型和结果模板的映射。另外,可以使用`<convention-result/>`元素来为特定的Action或Action...
- `struts.convention.result.path`: 指定结果文件(如JSP)的默认路径。 - `struts.convention.action.suffix`: 设置Action类的默认后缀,通常默认为`.action`。 了解了常量配置后,我们来看看`Struts2零配置实现....
此外,convention-plugin还支持通过注解来增强功能,如`@Result`用于指定Action执行后的结果页面,`@ActionParams`用于映射请求参数,`@Namespace`用于指定Action的命名空间等。 在处理模型对象时,convention-...
- **自定义路径**:可以通过设置`struts.convention.result.path`属性来指定结果页面存放的路径。例如,在`struts.xml`配置文件中添加如下配置: ```xml <constant name="struts.convention.result.path" value=...
如果需要自定义路径转换规则,可以在`struts.xml`文件中配置`struts.convention.result.path`常量。 ```xml <constant name="struts.convention.result.path" value="/"/> ``` 此外,还可以通过`@ActionMapping`中...
1. **无需XML配置**:Convention插件摒弃了传统的`struts.xml`配置文件,它会自动扫描特定包下的Java类,并根据预设的规则将其映射为Action。 2. **自动扫描**:默认情况下,它会搜索`action`,`actions`,`struts`...
该插件通过约定优于配置(Convention over Configuration)的原则,可以根据类名、方法名和包结构自动生成Action和Result的映射。 **约定优于配置的概念** 约定优于配置意味着在没有明确配置的情况下,系统会遵循...