struts2下拉列表
我需要在struts2 from List中创建一个下拉菜单。如何创建一个action类,以便在加载.jsp页面时,它首先填充列表struts2下拉列表,struts2,Struts2,我需要在struts2 from List中创建一个下拉菜单。如何创建一个action类,以便在加载.jsp页面时,它首先填充列表 我找到了这个链接,它也可以工作,但对于it工作,用户必须转到才能使其工作,但是如果有人直接转到select.jsp呢。由于您使用的是.jsp,您可以在呈现标记之前加载带有脚本的下拉列表 但是,更好的做法是允许操作执行加载并将.jsp文件隐藏在/WEB-INF下,这样它们就不能直接访问。执行此操作的常用方法是 如果您的拦截器堆栈中有它,则在调用请求的方法之前,它将自动
我找到了这个链接,它也可以工作,但对于it工作,用户必须转到才能使其工作,但是如果有人直接转到select.jsp呢。由于您使用的是.jsp,您可以在呈现
标记之前加载带有脚本的下拉列表
但是,更好的做法是允许操作执行加载并将.jsp文件隐藏在/WEB-INF下,这样它们就不能直接访问。执行此操作的常用方法是
如果您的拦截器堆栈中有它,则在调用请求的方法之前,它将自动调用操作中具有以下名称的任何方法:
- 准备{MethodName}()
- prepareDo{MethodName}()
- 准备()
public class YourAction extends ActionSupport {
public String prepare(){
// populate your drop down object
}
public String view(){
// forward to your jsp
return SUCCESS;
}
}
然后,您所要做的就是调用操作的view()方法,Struts将首先调用prepare。那么,让我看看我是否正确:我在类中实现prepare()方法,将它转发到使用该列表的页面?比如说,如果action类有3个diff forward,那么不是每个forward都会调用它,而且不是所有的forward都会使用该列表。我说得对吗?不是这样。您可以使用“excludeMethods”参数来防止它在某些方法名称上运行(请参阅工作流拦截器中有关排除的部分:)。还有一个“alwaysInvokePrepare”参数,您可以将其设置为false,以便只调用以方法名称为后缀的prepare方法(即,如果您的操作中有一个view()方法,并且alwaysInvokePrepare=false,则只会调用prepareView())。您还知道我如何实现依赖下拉列表吗?谢谢Pat,我正试图遵循这一点,但我一直在研究如何在选择第一个下拉值时调用操作方法!jquery能够处理列表还是必须处理JSON?您必须在下拉菜单上创建一个onchange事件处理程序,该下拉菜单向您的操作发出ajax请求。然后,操作必须以您最容易使用的格式创建响应。我建议将列表转换为JSON对象,然后使用该对象创建新的依赖下拉列表。我不确定您使用的Struts2的版本,但如果它尚未捆绑,这是一个很好的插件: