apache wicket组件的颜色

时间:2011-09-23 09:58:41

标签: html wicket

我有以下代码:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"
  xml:lang="en" lang="en">
  <body>
    <wicket:panel>
      <div wicket:id="serviceListContainer">
        <table>
          <tr wicket:id="serviceListView">
            <td>
              <span wicket:id="service.name"></span>
            </td>
            <td>
              <span wicket:id="service.state"></span> <!-- I WANT TO COLOR THIS PART IN RED! -->
            </td>
          </tr>
        </table>
      </div>
    </wicket:panel>
  </body>
</html>

如何更改将替换“service.state”的输出文本的颜色?我试过<font color="red">,但没有任何区别。 谢谢!

3 个答案:

答案 0 :(得分:8)

其他答案表明了如何在HTML模板中添加style="..."属性 。另一方面,如果您不希望静态地执行此操作(例如,您需要计算颜色然后将其添加到组件中),则应该add AttributeModifier到组件 1

示例(未经测试):

Label l = new Label("service.state", ...);
IModel<String> colorModel = new AbstractReadOnlyModel<String>() {
    public String getObject() {
        return "color: red;"; // Dummy example
    }
}; // Some model, holding a string representation of a CSS style attribute (e.g., "color: ...;") based on some date and/or calculation
l.add(new AttributeModifier("style", true, colorModel);

如果您不需要基于拉取的模型,甚至可以使用SimpleAttributeModifier

Label l = new Label("service.state", ...);
String styleAttr = "color: red;";
l.add(new SimpleAttributeModifier("style", styleAttr));

1)前提是setRenderBodyOnly(true)已调用 。这将从输出中删除包装<span>元素。

答案 1 :(得分:3)

来自W3Schools

  

&lt; font&gt;标记在HTML 4中已弃用,并已从HTML5中删除   万维网联盟(W3C)已删除标签   它的建议。在HTML 4中,应使用样式表(CSS)   定义许多HTML元素的布局和显示属性。

使用样式,即使它是内联样式,而不是:

<span style="color:red">this is red text</span>

如果您使用的是Wicket,则需要确保在标识为setRenderBodyOnly(true)的组件上未使用service.state,因为这样会删除<span>标记风格。

答案 2 :(得分:0)

<span wicket:id="service.state" style="color:red"></span>

或更好的是使用适当的CSS类