【问题标题】:How can I access the servlet application context from Struts 2 tags?如何从 Struts 2 标签访问 servlet 应用程序上下文?
【发布时间】:2012-03-01 08:37:30
【问题描述】:

如何在 struts 中访问 jsp 标签? 例如:

<s:select name="country" list="<%=countryList%>"  headerKey="0" headerValue="Country"
                  label="Select your country" required="true"/>

例外:

消息:/jsp/index.jsp(35,2) 根据 TLD 或属性 标记文件中的指令,属性列表不接受任何表达式。 countryList 是一个 ArrayList。

【问题讨论】:

    标签: java jsp struts2


    【解决方案1】:

    这个异常清楚地表明了原因,因为 S2 标签不允许在其中使用这个表达式。 除了 Tag 之外,还需要一个 List/ArrayList 或任何集合列表作为数据源,并且内置 ONGL 机制将为您完成剩下的工作。

    您有一个干净的方法来实现这一点,在您的操作类中创建一个名为 countryList 的属性,该属性的数据类型应为 List/Map 并为此属性提供一个 getter 和 setter。用所需的数据填充 List你的行动课。

    动作类

    public class MyAction extends ActionSupport{
    
      private List<String> countryList;
      // getter and setter for countryList
    
      public String execute() throws Exception{
       countryList=new ArrayList<String>();
       // Add values to list
       return SUCCESS;
     }
    }
    

    现在在你的 JSP 中你需要做的所有事情

    <s:select name="country" list="countryList"  headerKey="0" headerValue="Country"
                      label="Select your country" required="true"/>
    

    因此,当 OGNL 将这个 list="countryList" 作为数据源时,它会在您的操作类中查找名为 getCountryList() 的方法,并使用该数据填充选择标记。

    希望这能让你清楚地了解它是如何工作的。详情参考官方文档

    select tag

    【讨论】:

    • 是的 Umesh 那是理想的方式,但我从上下文中获取列表值,我直接在我的 jsp 中获取它并将其存储为 ArrayList。
    • 上下文是指应用程序上下文吗? Struts 2 公开了几乎所有内容,当然,您可能希望通过 OGNL 从 S2 标签访问。有关信息,请参阅此页面:struts.apache.org/2.x/docs/ognl.html
    【解决方案2】:

    您不需要对列表使用 java scriptlet。

    您必须使用 OGNL 表达式。如果您的操作有 getCountryList 方法,您需要做的就是:

    <s:select name="country" list="countryList"  headerKey="0" headerValue="Country"
                      label="Select your country" required="true"/>
    

    您应该搜索一些有关如何在 struts 中使用 OGNL 的文档。真的很强大。

    【讨论】:

    • 我从上下文中获取列表值,并直接在我的 jsp 中获取它。有没有办法使用它?我遇到了这个标签:%{#countryList} 它是什么?
    • 这是一个 OGNL 表达式,将搜索 struts 堆栈
    • 有没有办法在我的 JSP 本身的堆栈中插入值?
    • @lee:你可以使用推送标签到push值到值堆栈其他方式是使用set标签
    • @UmeshAwasthi:我可以将 jsp 变量值推入堆栈吗?
    猜你喜欢
    • 1970-01-01
    • 2013-07-09
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多