是否有可能在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做到这一点?
谢谢
我试过netbeans和eclipse,没有运气......(不要试试IntelliJ的想法)
我快速查看了代码
http://kickjava.com/src/groovy/servlet/TemplateServlet.java.htm
它给我的印象是.gsp页面被翻译成内存中的.groovy servlets(groovlets)(我可能错了)......
所以也许调试gsp并不是那么容易,因为我...
所以,谁能告诉我怎么做?
pd:通过调试,我的意思是逐步浏览代码,检查变量,添加监视以及所有这些事情.不是(不是那么)好的旧printf方法......
我正在用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:我可以做一个特定的功能来实现它,但我认为这应该是一个简单的方法...
编辑:我添加了完整的数据结构,比简单的列表更复杂
假设我有以下课程
class Genre {
static hasMany=[author:Author]
}
class Author{
static hasMany=[books:Books]
}
class Books{
Author author
}
Run Code Online (Sandbox Code Playgroud)
如何使用g:每个标签在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属性放在一起时,没有变量的内容,它总是禁用该字段.
我有一个部分模板,我包括在我的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的新手.我使用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) 这在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中${ ... }并正确评估/扩展.我错过了什么?
我正在使用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的模型,这将是我的最爱.
如果有人也可以在这种情况下对模型和参数的区别说几句话,那么这将是另外有用的!
我正在尝试这样做:
"/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文件,我不想逐个映射它们,而是我想要一些通用代码,它们像控制器映射一样映射它们.
感谢帮助!
gsp ×10
grails ×9
groovy ×3
html ×2
debugging ×1
grails-2.0 ×1
gstring ×1
ide ×1
javascript ×1
map ×1
model ×1
params ×1
setattribute ×1
taglib ×1
templates ×1
url-mapping ×1