<g:select name="confer" from="${orig}" optionKey="id" value="ola" />
<g:link controller="conferenceUser" action="addFavourite" params="[confer: confer]">Some text</g:link>
如何从选择框中获取当前选择以传递g:link的参数?
答案 0 :(得分:3)
g:link params在页面渲染时设置。您将需要一些javascript,它会对选择框的select事件做出反应。在http://api.jquery.com/change/查看jQuery Change方法,并查看Change URL parameters如何操作url查询参数。
另一种方法是拦截click事件并获取select元素的当前值,然后继续。
答案 1 :(得分:0)
正如劳夫齐特所说,在这种情况下,有必要使用javascript。 params =“ [...]”渲染时将成为查询字符串,因此在您的情况下,有必要截取所选选项的值并将其添加到查询字符串中。以下是基本的实现。从如何在HTML中呈现这些grails标签开始,您可以尝试
假设您的示例将呈现以下内容:
<select name="confer" id="confer">
<option value="1">confer 1</option>
<option value="2">confer 2</option>
<option value="3">confer 3</option>
</select>
<a href="controller/action" id="anchor">Some text</a>
并假设您必须在加载视图期间分配选定选项的值,并且在更改选择选项时,可以尝试以下脚本
<script>
const anchor = document.querySelector('#anchor');
const confer = document.querySelector('#confer');
confer.addEventListener('change', event => addParams());
function addParams() {
const host = getHost();
anchor.href = `${host}?confer=${confer.value}`
}
function getHost() {
return window.location.origin;
}
addParams()
</script>
可测试的版本
const anchor = document.querySelector('#anchor');
const confer = document.querySelector('#confer');
confer.addEventListener('change', event => addParams());
function addParams() {
const host = getHost();
anchor.href = `${host}?confer=${confer.value}`
}
function getHost() {
return window.location.origin;
}
addParams()
<select name="confer" id="confer">
<option value="1">confer 1</option>
<option value="2">confer 2</option>
<option value="3">confer 3</option>
</select>
<a href="controller/action" id="anchor">Some text</a>
为了可视化修改后的参数,您必须检查锚元素