struts select标签的区别

时间:2013-06-05 08:53:35

标签: java jsp struts2 struts-1

<s:select><html:select>代码之间有什么区别?为了填充下拉列表,有两个不同的标签用于相同目的的目的是什么?

4 个答案:

答案 0 :(得分:1)

没有区别。这取决于prefix

如果你使用这个

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

然后使用

  <s:select>

如果你使用这个

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

<html:select> 

然后使用

答案 1 :(得分:0)

<html:select><html:something代码是 Struts 1 标记库的一部分,特别是 tags-html 库:

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

<html:select ...>

Example of usage of Struts1's <html:select>


<s:select><s:something标记是 Struts 2 标记库的一部分, 特别是 struts-tags 库:

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

<s:select ...>

Example of usage of Struts2's <s:select>


修改

由于@UmeshAwasthi让我注意到,这可能并不明显,这是约定,而不是代码语法 ;

这意味着,如果一些不喜欢标准的疯子想要反转标签库的前缀他可以,就像他可以写的一样Integer myDouble = new Integer(); ...只有语义被破坏,语法还可以。

但是,因为我认为产生问题的疑问(与我多年前相同)是由于网络上出现了这两种语法(<html:<s:)的多次出现相信我,他们总是提到合适的图书馆(至少在在线文章中,可能并不总是在问题这里或 coderanch 等) )。

总结一下,“公约”(不是规则,只是规则)是:

html = Struts 1
s    = Struts 2
c    = JSTL

答案 2 :(得分:0)

它依赖于你在谈论什么方面而且上面的答案都是正确的。

这里可以有两个方面

  1. 您正在将Struts旧版本与Struts2混合使用。
  2. 这只是开发人员使用前缀的首选方法。
  3. 一般来说,使用Struts旧版本的所有人都知道使用html作为标记前缀, Andrea Ligios 非常好地解释了这一点。

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

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

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

    虽然我确信你可能已经看过两个代表旧Strut的代码,而其他代表Struts2版本。

答案 3 :(得分:0)

两个标记具有相同的名称,但标记前缀定义的名称空间不同。如果您想使用其他标签库,其中包含已使用名称的标签,那么最好在不同的名称空间下定义这些标签库,因此标签名称不会发生冲突以实现不同的行为。要确保标记名称没有更好地冲突,以使用前缀为不同名称空间的其他标记库。