【问题标题】:Difference of Struts <select> tagsStruts <select> 标签的区别
【发布时间】:2013-06-05 08:53:35
【问题描述】:

&lt;s:select&gt;&lt;html:select&gt; 标签有什么区别?使用两个不同的标签来填充下拉列表的目的是什么?

【问题讨论】:

  • 你能贴出简单的代码吗
  • 抱歉错字。我纠正它

标签: java jsp struts2 struts-1


【解决方案1】:

没有区别。这取决于prefix

如果你使用这个

<%@ taglib prefix="s" uri="/struts-tags" %>

然后使用

  <s:select>

如果你使用这个

<%@ taglib prefix="html" uri="/struts-tags" %>

<html:select> 

然后使用

【讨论】:

    【解决方案2】:

    好吧,这取决于您在谈论什么方面,并且以上两个答案都以自己的方式正确。

    这里可以有两个方面

    1. 您正在将 Struts 旧版本与 Struts2 混合使用。
    2. 这只是开发人员使用前缀的首选方式。

    通常所有使用过旧版本 Struts 的人都知道使用 html 作为标签前缀,Andrea Ligios 对此进行了很好的解释。

    一般来说,当我们使用 Struts2 标签时,我们使用 s 作为前缀,但这只是一个约定,您可以使用任何约定(前缀),例如 &lt;s:select&gt;, &lt;html:select&gt;, &lt;myprefix:select&gt;

    所有你需要告诉框架什么前缀,你想在模板文件中的以下行的帮助下使用

    <%@taglib prefix="prefix of you choice" uri="/struts-tags" %>
    

    尽管我确信您可能已经在两个地方看到过代码,其中一个代表旧 Strut,另一个代表 Struts2 版本。

    【讨论】:

      【解决方案3】:

      &lt;html:select&gt;&lt;html:something 标签是 Struts 1 标签库的一部分,特别是 tags-html 库:

      <%@taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
      
      <html:select ...>
      

      Example of usage of Struts1's &lt;html:select&gt;


      ,而&lt;s:select&gt;&lt;s:something 标签是Struts 2 标签库的一部分, 特别是 struts-tags 库:

      <%@taglib prefix="s" uri="/struts-tags" %>
      
      <s:select ...>
      

      Example of usage of Struts2's &lt;s:select&gt;


      编辑

      正如@UmeshAwasthi 让我注意到的那样,这可能不是一个约定,而不是代码语法

      这意味着,如果某个不喜欢标准的疯子想要反转标签库的前缀HE CAN,就像他可以写的一样Integer myDouble = new Integer(); ... 只是语义坏了,语法没问题。

      但是,由于我猜您的问题产生的疑虑(与我多年前一样)是由于这两种语法(&lt;html:&lt;s:)在网络上多次出现,相信我,他们总是引用正确的库(至少在在线文章中,可能并不总是在某些问题这里或coderanch等中)。

      总结起来,约定(不是规则,只是规则)是:

      html = Struts 1
      s    = Struts 2
      c    = JSTL
      

      【讨论】:

      • 虽然我同意你的观点,但这不是硬性规定html 前缀是Struts1 的一部分,我们也可以在Struts2 中使用它
      • 你说的完全正确;但这是惯例,在阅读on Internet示例时,如果您看到&lt;html:,那么他们正在谈论Struts1,如果您看到&lt;s:,他们在谈论 Struts2。我从来没有见过他们倒置的一个案例,尽管这是可能的。您甚至可以将 FooInterceptor 称为 Action 并将 FooAction 称为 Interceptor,没有人会阻止您,除了常识和一点智慧;)
      【解决方案4】:

      两个标签名称相同,但标签前缀定义的命名空间不同。

      如果您想使用其他标签库,其标签的名称已经在使用,那么最好在不同的命名空间下定义这些标签库,这样标签名称就不会发生冲突以实现不同的行为。

      为了确保标签名称不会发生冲突,最好使用带有不同命名空间前缀的其他标签库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-21
        • 2011-07-29
        • 1970-01-01
        • 1970-01-01
        • 2014-10-04
        • 2012-01-29
        • 1970-01-01
        相关资源
        最近更新 更多