在grails中,我有一个像/ myapp / questions / all
这样的链接all是传递给我的控制器的参数(全部,回复,......)。
我有一个表单可以根据类型搜索问题:总而言之,在回复中,... 在搜索表单中,我有一个隐藏字段来传递参数。
但显示的网址是/ myapp / questions / ans not / myapp / questions / all
所以我尝试了url:url =“[action:'question',controller:'mycontroller',params:['monparam':'$ {mavariable}']]”
但它不起作用。
有什么想法吗?
由于
答案 0 :(得分:1)
你可以这样做:
class UrlMappings {
static mappings = {
name nameOfTheMapping: "/question/$para/" {
controller = "mycontroller"
action = "question"
}
...
然后您可以通过以下方式访问映射:
<a href='${createLink(mapping: 'nameOfTheMapping', params: [para: para.encodeAsUrl()])}' title='test'>Test</a>
上面的代码是在我的taglib中创建的,所以如果你想在视图中使用它,它可能会有所不同。
答案 1 :(得分:0)
我不完全理解你的问题,但似乎你没有遵循grails惯例。网址的格式为
/app/controller/action
所以grails将你的url的'all'部分解释为在问题控制器上调用的动作(我从你的'myapp / questions / all'链接中得到的)。
我对你的网址规范感到困惑。
url="[action:'question', controller:'mycontroller', params:['monparam':'${mavariable}']]"
基于此,你应该有一个名为'mycontroller'的控制器,上面有一个名为'question'的动作。您将在浏览器中看到的网址是
/应用/ myController的/问题monparam:任何
有关控制器的详细信息,请参阅here。
答案 2 :(得分:0)
您需要编辑grails-app/conf/UrlMappings.groovy
并创建一个省略操作的控制器映射。 (因为你在一个动作中处理这一切)
类似
"/questions/$question_type" (controller: 'questions', action: 'your_action')
其中“your_action”是处理这些请求的操作的名称。
然后在QuestionsController.groovy
:
def your_action = {
// use question_type as needed
def questions = Questions.findByQuestionType(params.question_type)
// etc.
}
您可以执行各种操作来影响网址与请求的映射,请查看UrlMapping section in the Grails User Guide.