3

我是 struts 的新手,想知道为什么当它们似乎都在做同样的事情时,我们为什么要在以前的 html 标记上引用 struts 标记,使用 struts 标记而不是 html 标记的优势是什么。像

<s:form action="myAction">
    <s:textfield name="username"></s:textfield>
    <s:textfield name="password"></s:textfield>
    <s:submit name="submit" value="submit"></s:submit>
</s:form>

<form action="myAction" method="post">
    <input type="text" name="username"/>
    <input type="text" name="password"/>
    <input type="submit" name="submit"/>
</form>

google了一下,还没有得到满意的答复,请多多指教

我知道它添加了一些额外的东西,比如标签或其他东西,这对我来说很好,但我想知道它是否对性能或任何特定于请求对象的东西有任何作用,其他任何东西只是避免程序员的额外输入。

4

3 回答 3

3

有不同类型的 Struts 2 标签。

表单标签尤其有用,但它们的功能完全取决于所使用的 Struts 2 主题。"simple"除了标准的 HTML 标记之外,该主题几乎没有提供任何好处。默认"xhtml"主题发出表格行和一些样式。自定义主题实现您想要的任何功能。无论主题如何,底层 JSP 源都不需要更改。

主要优点是:

  • 验证错误消息
  • 表格展示/造型
  • 框架集成(例如,从操作中自动填充的值)

还有一组 Dojo(非常不推荐)和 jQuery 标签,它们在自定义标签中封装了大量的 JavaScript 功能,这使得简单的动态功能非常简单。

还有非视图标签,例如<s:iterator>等。它们的一些功能是 JSTL 的副本(<c:forEach>在迭代器标签的情况下)。在这种情况下,当功能重叠时,使用 S2 标签并没有太多好处。

一些标签没有 JSTL 模拟,例如<s:merge><s:sort>. ,是否适合视图层的功能是一个不同的讨论。一些提供与 Struts 2 其他方面的集成,如 I18N(例如,<s:text>)。有些人了解 Struts 2 配置(例如,<s:url>)。

任何自定义标记的目的都是为了简化视图层编程(例如,JSP)。S2 提供了很多标签来帮助解决这个问题。有些是简单和通用的(非 UI 标签),而 UI 标签是使用 FreeMarker 实现的并且是高度可定制的。

于 2012-12-17T03:34:31.373 回答
2

在这个特定的例子中,不是很多,但好处是它在解析时被替换为 HTML,并且它被替换的内容是可定制的您可以定义一个标准表单模板,并<s:form>用它替换。

换句话说,它(理论上)是标准化网站行为并尽量减少打字。

更新: Steven 指出了一个更有价值的原因,Struts 可以智能地填充和更新<s:form>字段,例如在提交错误后留下填写的表单。

于 2012-12-16T21:18:49.240 回答
0

Struts 纯粹使用 JAVA!因此,即使程序员不了解 HTML/JAVASCRIPT,他仍然可以使用 struts 的内置标签来解决问题。Struts 还提供了内置的验证工具,就像 Javascript 一样。

于 2014-01-30T04:58:27.367 回答