是否有可能在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做到这一点?
谢谢
我在我的域对象中有一个字段,我将其定义为整数...
Integer minPrice
Run Code Online (Sandbox Code Playgroud)
然后我在GSP页面中访问它,如下所示:
${fieldValue(bean: myBean, field: 'minPrice')}
Run Code Online (Sandbox Code Playgroud)
我在HTML中得到的是......
100,000
Run Code Online (Sandbox Code Playgroud)
这不是一个整数,它是一个字符串.更糟糕的是,它是特定语言环境中的格式化字符串.
这是一个问题,因为我对HTML FORM有一个SELECT控件,它具有minPrice的(非序数)值范围,我希望将其存储在我的域对象中作为整数,我不想存储索引到我必须在它们之间反复映射的一些值数组,我想要值本身.
我的选择控件看起来像这样......
<g:select name="minPrice"
value="${fieldValue(bean: personInstance, field: 'minPrice')}"
onchange="setDirty()"
noSelection='${['0':'Select a number...']}'
from="${[
['name':'100,000', 'id':100000],
['name':'200,000', 'id':200000],
['name':'300,000', 'id':300000]
]}"
optionKey="id" optionValue="name"
/>
Run Code Online (Sandbox Code Playgroud)
当我从SELECT字段获取值以回发到服务器时,它正确地具有一个Integer值,我坚持这个值.但是,返回行程从不预先选择下拉列表中的右行,因为值是以逗号分隔的字符串.
这在我的代码中的其他地方可以很好地用于小数字,其中逗号格式化不起作用,并且SELECT的往返进出成功.但值> 999不起作用.
文档说"此标记将检查已成为数据绑定主题的bean,并从数据绑定期间填充的bean的errors对象中包含的最初提交的值或bean的属性值获取字段的值.获得该值后,它将自动进行HTML编码."
这是我想要避免的最后一点,因为它似乎格式化整数.那么,我需要知道什么样的Grails/GSP魔法,所以我可以将我的整数渲染为整数到我的SELECT并预先选择正确的行?
编辑: 我已经根据下面的答案尝试了一些进一步的事情,到目前为止相当令人失望的结果......
如果我将<gformatNumber/>
标记放入我<g:select/>
的浏览器中,我将页面代码作为文本.
<g:select name="minPrice"
value='<g:formatNumber number="${fieldValue(bean: personInstance, field: 'minPrice')}" format="#" />'
onchange="setDirty()"
noSelection='${['0':'Select a number...']}'
from="${[
['name':'100,000', 'id':100000],
['name':'200,000', 'id':200000],
['name':'300,000', 'id':300000],
]}"
optionKey="id" optionValue="name"
/>
Run Code Online (Sandbox Code Playgroud)
使用GSP中的数字格式标签对我的整数值100000这样...
var x = <g:formatNumber number="${fieldValue(bean: personInstance, field: …
Run Code Online (Sandbox Code Playgroud) 自从我真正使用J2EE以来已经有很长一段时间了,请原谅我的无知.我最近参与Grails项目,再次引起了我对Java的兴趣,特别是在Grails中,因为它使得在Java平台上构建Web应用程序再次变得有趣.话虽这么说,我希望专家评论我对使用Grails构建的应用程序的以下要求:
设计团队(Web设计人员)需要访问GSP页面并编辑视图文件(布局,模板等),而无需打扰开发团队(软件开发人员).这种情况可以在构建期间和部署到生产之后进行.
设计人员,开发人员和业务用户之间的沟通水平不是问题.但是,大约40%的时间,业务部门涉及对前端的请求更改,这对开发人员的时间没有影响,但需要设计团队成员的时间.目前,部署工作流程遵循Grails应用程序,通过将War文件部署到Tomcat服务器.我想有一种更简单的方法可以让设计团队在不经过构建和部署生命周期的情况下进行UI更改.
一些设计团队成员过去曾接触过PHP,有时会错过覆盖模板文件以使UI功能更加实用或改进布局模板的能力.我希望在Grails中有类似的方式来适应这种简单性.有人告诉我,爆炸War文件可能是一个选项,但仍然需要重新加载Tomcat托管的应用程序.
如果您认为我以错误的方式查看所需的解决方案,请加入,因为我对所有相关团队成员的可行妥协感兴趣.谢谢.
当您使用grails表单标记时,如何在呈现的HTML表单标记中具有id选择器?
如果你使用
<g:form action="register" controller="registration" id="registrationform"/>
Run Code Online (Sandbox Code Playgroud)
它将表单post URL呈现为/registration/register/registrationform
.
有没有办法提供渲染的属性?
我试图这样做没有成功:
<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属性放在一起时,没有变量的内容,它总是禁用该字段.
如何在没有grails尝试生成视图的情况下调用我的某个控制器类中的方法?
我有index.gsp
一个页面.在该页面中有一个注册按钮和一个登录按钮.一旦您登录,如果登录正常,该应用程序将再次驱动您index.gsp
.我需要,如果用户登录,这些按钮会消失,而是说"你好,[用户名]".我已尝试使用此代码,但它不起作用(它从未登录):
在控制器中:
def dologin(){
def user=Usuario.findByUsernameAndPassword(params.username,springSecurityService.encodePassword(params.password) )
if(user){
redirect (controller:'usuario', action:'index')
}else{
flash.message=message(code:'default.user.not.found', args:[message(code: 'params.username', default:'Usuario'), params.id])
def userlogged = springSecurityService.getCurrentUser()
render view: 'index', model: [user: user]
}
}
Run Code Online (Sandbox Code Playgroud)
在index.gsp中(不完整,只有重要的部分):
<sec:ifNotLoggedIn>
<div id="buttons">
<div id="login"><a href="loginurl">Login</a>
</div>
<div id="register"><a href="registerurl">Registrarse</a>
</div>
</div>
</sec:ifNotLoggedIn>
<sec:ifLoggedIn>
<div id="greet">Hello!</div>
</sec:ifLoggedIn>
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
谢谢.
在Grails应用程序中,我试图找出何时使用视图以及何时使用gsp的模板.有没有明显的原因?或者它只是重新使用?
我想div
在textField
动态输入数据时更新内容.我尝试过以下方法:
<g:formRemote name="changeText" on404="alert('not found!')" update="resultDiv"
url="[ controller: 'results', action:'results' ]">
<g:textField onChange="submit();" name="text"/>
</g:formRemote>
Run Code Online (Sandbox Code Playgroud)
一切都工作,除了新的页面是渲染,并div
没有更新...
def results = {
render "new content"
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 spring-security-core 插件,并在/views/login/denied.gsp下创建了一个自定义的Denied.gsp页面。如果我直接通过/login/denied进入该页面,我可以看到布局已应用。但是,如果我尝试访问受限页面并且被路由到拒绝的.gsp,它只会呈现确切的 html,而不处理布局。
<html><head>
<title>Denied</title>
<meta name="layout" content="main">
</head>
<body>
<section class="breadcrumb p07">
<p><a href="/">Home</a> Denied</p>
</section>
<section class="content">
<p>Sorry, you're not authorized to view this page.</p>
</section>
</body></html>
Run Code Online (Sandbox Code Playgroud)
我将这些设置为 false,以便默认情况下不会锁定所有内容:
grails.plugin.springsecurity.rejectIfNoRule = false
grails.plugin.springsecurity.fii.rejectPublicInvocations = false
Run Code Online (Sandbox Code Playgroud)
管理员控制器:
@Secured(['ROLE_ADMIN'])
class AdminController {
def index() {
}
}
Run Code Online (Sandbox Code Playgroud)
例如,我以 ROLE_USER 身份登录,然后转到 /admin,它正确地拒绝了我。然而,它的页面上没有样式。
没有关于 css、js 等的附加规则。
我不明白为什么在这种情况下不应用样式。有任何想法吗?