GrailsのTaglib使っててid属性がどこかへいってしまう
htmlのid属性と、grailsのlink生成のためのドメインIDが混在していてややこしいのですが、例えばg:link
<a href="/appname/book/list" id="book-list">book list</a>
というようなHTMLを期待して
<g:link controller="book" action="list" id="book-list">book list</g:link>
といういうふうにg:linkを使うと実際には
<a href="/appname/book/list/book-list">book list</a>
となってしまいます。これをg:linkで回避するにはidではなくelementIdを指定します。
<g:link controller="book" action="list" elementId="book-list">book list</g:link>
そうすると期待する
<a href="/appname/book/list" id="book-list">book list</a>
になります。
g:formの場合はまた、ちょっと動作が違っていて
<g:form controller="book" action="create" id="create-book"> ... </g:form>
ではなく
<g:form url="[controller: 'book', action: 'create']" id="create-book"> ... </g:form>
というふうにurl属性を使用すると回避できます。なぜかこちらidのままでおk(なんで統一されていなの?)。
全部調べてませんが、他のタグでも困ったらリファレンス参照するか、grailsのtaglibのソースを探ると良いです。