0

当使用 Struts(2) 的 UI 标签时,会自动生成更多的 HTML 元素。例如,定义<s:form ... >它时包含form在 a 中table(即使我们没有声明这样的表)。因此,如果使用了任何CSS一个(比如说,仅使用 div 标签并CSS根据 即使允许struts生成这样的元素并且我们向它们添加CSS,那么也必须无聊地添加css来设计自动生成的html元素,因为更多的元素会以各种位置和大小生成。我也觉得,更多的 html 代码可能会影响浏览器页面的加载时间。

那么有没有办法避免在使用 struts UI 标签时生成此类元素,
或者
是否有一种方便的方法可以在 Struts UI 标签中使用 CSS?(我在 Stackoverflow 中阅读了一个问题,它回答说,最终添加 struts 生成的 css。但与普通的 jsp html 设计级别相比,这并不是那么容易......)

4

2 回答 2

4

简而言之,Struts2 致力于主题的概念,它提供了一些开箱即用的主题。根据选择的主题,它会在渲染视图时为使用的标签生成一些 HTML 代码。

主题确实是 Struts2 的一个非常漂亮的概念,它甚至为您提供了根据您的要求创建自定义主题的方法。

默认情况下,Struts2 使用xhtml主题来回答您的问题,这意味着它将生成一些 HTML(包括名称建议的表格),同时为使用的标签呈现 HTML。

您可以通过在 struts.properties 文件或 struts.xml 文件中指定简单主题来控制 HTML 生成

Struts 属性文件

struts.ui.theme=simple

Struts.xml 文件

<constant name="struts.ui.theme" value="simple" />

S2开箱即用提供的其他主题是

  • css_xhtml:生成基于 div 的 HTML
  • ajax:用于ajax标签

请注意,简单的主题不会生成任何额外的 HTML,而只会标记等效的 HTML 代码,并且您可以通过提供自己的 CSS 和任何其他属性来完全控制自定义您的视图。

属性文件以及 struts.xml 中的上述设置将适用于整个应用程序,这意味着每个标签都将为整个应用程序生成相同的 HTML。此外,如果您想控制每个标签的 HTML 生成,则每个 S2 标签作为一个属性theme,即为这个属性提供值,如 simple、css_xhtml 等,以控制每个标签的 HTML 生成。

还有另一种方法可以通过使用以下代码来控制每个请求的主题 <s:set name="theme" value="'simple'" scope="page" /> 或

<s:set name="theme" value="%{myTheme}" scope="page" />

选择是你想走的路

于 2012-06-17T11:53:32.463 回答
1

添加theme="simple" 到标签。

示例代码:

<s:select id="..." list="..." theme="simple">
于 2013-02-11T15:06:29.773 回答