标签: gsp

GSP g:选择选项默认选择

是否有可能在g:select标签中默认选择一个选项字段?

我只在文档中看到了"noSelection"参数.

<g:select name="user.age" from="${18..65}" value="${age}"
      noSelection="['':'-Choose your age-']"/>
Run Code Online (Sandbox Code Playgroud)

但我需要从收到的数据中选择默认值.

例如18..65是我的范围,我想选择20作为默认选择.

这是可能的还是我必须用javascript做到这一点?

谢谢

html grails gsp

5
推荐指数
1
解决办法
1万
查看次数

如何调试gsp页面?(没有grails,只有gsp)

我试过netbeans和eclipse,没有运气......(不要试试IntelliJ的想法)

我快速查看了代码

http://kickjava.com/src/groovy/servlet/TemplateServlet.java.htm

它给我的印象是.gsp页面被翻译成内存中的.groovy servlets(groovlets)(我可能错了)......

所以也许调试gsp并不是那么容易,因为我...

所以,谁能告诉我怎么做?

pd:通过调试,我的意思是逐步浏览代码,检查变量,添加监视以及所有这些事情.不是(不是那么)好的旧printf方法......

ide debugging groovy gsp

5
推荐指数
1
解决办法
5831
查看次数

正确地将Groovy列表传递给GSP中的Javascript代码

我正在用Grails制作一个Web应用程序.我有一个列表,其中包含必须包含在JavaScript中的数据,以便在<select>下拉列表中执行一些动态加载.基本上,我从服务器获得一个两级列表,然后第一级显示在一个下拉框中.当用户选择一个选项时,与该选项关联的列表将显示在另一个下拉框中.

JavaScript函数的gsp页面上的(简化)代码如下

function selecTipe() {
        var types = ${typeList}
        alert('List of types ' + types )
Run Code Online (Sandbox Code Playgroud)

问题是,如果将typeList定义为(在Groovy中)为

typeList = [['TYPE1', ['VAR1','VAR2','VAR3']], 
            ['TYPE2', ['VAR1','VAR2','VAR3']]
            ['TYPE3', ['VAR1','VAR2','VAR3']] ]
Run Code Online (Sandbox Code Playgroud)

当页面重新定义时,JavaScript代码显示为

function selecTipe() {
        var types = [[ TYPE1, [ VAR1, VAR2, VAR3 ]], 
                     [ TYPE2, [ VAR1, VAR2, VAR3 ]]
                     [ TYPE3, [ VAR1, VAR2, VAR3 ]] ]
        alert('List of types ' + types )
Run Code Online (Sandbox Code Playgroud)

这是错误的,因为JavaScript不是作为字符串处理,而是因为缺少引号而作为引用.

有没有办法强制Groovy打印带引号的数组列表或任何其他简单的方法来实现这一目标?

PD:我可以做一个特定的功能来实现它,但我认为这应该是一个简单的方法...

编辑:我添加了完整的数据结构,比简单的列表更复杂

javascript grails groovy gsp

5
推荐指数
1
解决办法
7941
查看次数

你如何嵌套g:gsp中的每个标签?

假设我有以下课程

class Genre {
    static hasMany=[author:Author]
}

class Author{

    static hasMany=[books:Books]
}


class Books{
       Author author 
}
Run Code Online (Sandbox Code Playgroud)

如何使用g:每个标签在gsp中打印?

grails gsp

5
推荐指数
1
解决办法
6452
查看次数

Grails - 在GSP中设置"已禁用"属性名称和值

我试图这样做没有成功:

<g:textField title="${title}" ${disabled} />
Run Code Online (Sandbox Code Playgroud)

我想要应用一个禁用的属性,仅在$ {disabled}变量为TRUE时.我不想使用条件,因为在其他视图中我获得了大量代码并使用IF语句,将是一个混乱.

另一件事是应用这样的属性:

<g:textField title="${title}" disabled="${disabled}" />
Run Code Online (Sandbox Code Playgroud)

但是当我把disabled属性放在一起时,没有变量的内容,它总是禁用该字段.

html grails taglib setattribute gsp

5
推荐指数
2
解决办法
9786
查看次数

在视图根下使用部分模板

我有一个部分模板,我包括在我的main.gsp.

对于网站上的每个控制器/页面,此部分内容略有不同.因此,我将为_headerDetails.gsp每个视图目录单独分配.

除默认应用程序外,此方法正常index.gsp.当我包含一个_headerDetails.gsp根目录视图目录时,我收到以下错误:

org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error processing GroovyPageView: Template not found for name [headerDetails] and path [//_headerDetails.gsp]
Run Code Online (Sandbox Code Playgroud)

grails不允许在根目录中使用partials吗?

Main.gsp

<html>
    <head>
        <g:layoutTitle/>
        <r:layoutResources/>
        <link href="${resource(dir: 'css', file: 'style.css')}" type="text/css" rel="stylesheet">
    </head>

    <body class="home">

        <div id="wrapper">

            <div id="page_top"></div>

            <div id="content">
                <g:render template="/common/header" />

                <g:render template="headerDetails" />

                <br class="clear" />

                <g:layoutBody/>

                <br class="clear" />

            </div>

            <div id="page_bottom"></div>

            <g:render template="/common/footer" />  

        </div>

        <r:layoutResources/>

   </body>
</html>
Run Code Online (Sandbox Code Playgroud)

grails templates gsp

5
推荐指数
1
解决办法
3597
查看次数

如何在GSP中使用Spring Security Grails插件获取current_user

我是Grails的新手.我使用Spring Security Grails插件进行身份验证.我想在我的视图gsp文件中获取当前用户.

我这样想...

<g:if test="${post.author == Person.get(springSecurityService.principal.id).id }">
      <g:link controller="post" action="edit" id="${post.id}">
            Edit this post
      </g:link>
</g:if>
Run Code Online (Sandbox Code Playgroud)

在这里,我想显示编辑此帖子链接,仅显示由signed_in用户创建的帖子.但它显示出错误 -

Error 500: Internal Server Error

 URI
    /groovypublish/post/list
 Class
   java.lang.NullPointerException
 Message
   Cannot get property 'principal' on null object
Run Code Online (Sandbox Code Playgroud)

这是我的Post.groovy -

class Post {

static hasMany = [comments:Comment]

String title
String teaser
String content
Date lastUpdated
Boolean published = false
SortedSet comments
Person author

....... more code ....
Run Code Online (Sandbox Code Playgroud)

这是我的Person.groovy域类文件 -

class Person {

transient springSecurityService

String realName
String …
Run Code Online (Sandbox Code Playgroud)

grails spring-security gsp grails-2.0

5
推荐指数
2
解决办法
2万
查看次数

为什么.collect()不能在以下GString中工作?

这在GSP页面中按预期工作:

<td>${Foo.findAllByBar(bar)}</td>
Run Code Online (Sandbox Code Playgroud)

但是当添加一个collect语句时代码会中断..

<td>${Foo.findAllByBar(bar).collect { it.name }}</td>
Run Code Online (Sandbox Code Playgroud)

Error 500: Could not parse script [...gsp]: startup failed,
     ...: 129: expecting '}', found ')'
     @ line 129, column 196. 1 error`.
Run Code Online (Sandbox Code Playgroud)

我的印象是任何有效的Groovy代码都可以放在GString中${ ... }并正确评估/扩展.我错过了什么?

grails groovy gsp gstring

4
推荐指数
1
解决办法
966
查看次数

如何间接引用grails GSP模型变量,例如通过.get(...)

我正在使用GSP发送基于MailService插件的电子邮件.sendMail关闭传递(以及其他)body(view:..., model:myModel)

我知道我只能${itemName}在GSP中使用myModel Map的每个项目.但是,由于我有时想动态地构建项目名称'item'+i,我需要有一些周围的方法来访问变量.

我已经尝试了${model.get('item'+i),${params.get('item'+i)但是,模型为null,params是一个空的Map.我也试过了pageScope,但是虽然我可以访问一个项目,但我${pageScope.itemName无法使用,${pageScope.get('item'+i)}因为pageScope不是Map.

可能有多种解决方案可以解决这个问题; 我很高兴一个简单的;-).我看到的一个解决方案是将myModel作为唯一参数传递,然后始终使用myModel.get(...),但这意味着我必须更改所有现有的GSP以始终引用myModel而不是直接访问项目(具有固定名称); 所以如果有一种方法我不必改变传递给GSP的模型,这将是我的最爱.

如果有人也可以在这种情况下对模型和参数的区别说几句话,那么这将是另外有用的!

grails model map params gsp

4
推荐指数
1
解决办法
6410
查看次数

通用视图URL在Grails中的映射

我正在尝试这样做:

"/templates/$tml"{
        view: "/templates/$tml"
    }
Run Code Online (Sandbox Code Playgroud)

还有这个:

"/templates/$tml"{
        view: "/templates/${tml}"
    }
Run Code Online (Sandbox Code Playgroud)

还有这个:

"/templates/$tml"{
        view: "/templates/${params.tml}"
    }
Run Code Online (Sandbox Code Playgroud)

但它们都不起作用.在模板文件夹中,我有很多GSP文件,我不想逐个映射它们,而是我想要一些通用代码,它们像控制器映射一样映射它们.

感谢帮助!

grails gsp url-mapping

4
推荐指数
1
解决办法
764
查看次数