# 5.1 设置任何属性的值

假设我们的网站发布简讯，并且我们想要用户能够订阅。于是，我们创建了一个带有表单的`/WEB-INF/templates/subscribe.html`模版：

```markup
<form action="subscribe.html">
  <fieldset>
    <input type="text" name="email" />
    <input type="submit" value="Subscribe!" />
  </fieldset>
</form>
```

对Thymeleaf来说，这个模版更像是静态原型，而不是一个网络应用的的模版。首先，我们表单里的`action`属性静态地链接到了模版文件自身，所以没有地方留给有用的URL重写。其次，提交按钮里的`value`属性使按钮显示为英文文本，但是我们想要使其国际化。

输入`th:attr`属性，它可以改变标签的属性值：

```markup
<form action="subscribe.html" th:attr="action=@{/subscribe}">
  <fieldset>
    <input type="text" name="email" />
    <input type="submit" value="Subscribe!" th:attr="value=#{subscribe.submit}"/>
  </fieldset>
</form>
```

概念相当简单：`th:attr`简单地接受一段表达式，此表达式将一个值赋值给一个属性。已经创建了相应的控制器和信息文件的话，处理这个文件将得到：

```markup
<form action="/gtvg/subscribe">
  <fieldset>
    <input type="text" name="email" />
    <input type="submit" value="¡Suscríbe!"/>
  </fieldset>
</form>
```

除了新的属性值，你还可以看到应用上下文名已经自动加上了前缀，变成了`/gtvg/subscribe`。这在之前的章节有讲到。

但是，要是我们想要一次设置多个属性，该怎么办呢？XML规则不允许❎在一个标签里设置一个属性两次。所以`th:attr`将会接受一个逗号分隔的赋值列表，就像：

```markup
<img src="../../images/gtvglogo.png" 
     th:attr="src=@{/images/gtvglogo.png},title=#{logo},alt=#{logo}" />
```

提供需要的信息后，这将会输出：

```markup
<img src="/gtgv/images/gtvglogo.png" title="Logo de Good Thymes" alt="Logo de Good Thymes" />
```
