标签: gsp

为什么在Grails中使用<g:textField />?

如果您已熟悉标准HTML表单标签,那么在Grails中使用g:textField的原因是什么?

如果我理解正确,以下两个标记替代方案是等效的:

<input type="text" name="name" value="${params.name}" id="name" />
<g:textField name="name" value="${params.name}" />
Run Code Online (Sandbox Code Playgroud)

在任何情况下使用g:textField会增加价值吗?我错过了什么吗?

grails taglib gsp

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

Grails g:each,使用fieldvalue或直接访问差异

<g:each in="${business}" status="i" var="businessInstance">
<tr class="${(i % 2) == 0 ? 'odd' : 'even' }">
<td>${fieldValue(bean: businessInstance, field: "id") }</td>
<td>${businessInstance.id}</td>
</tr>
</g:each>
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,第一和第二表数据都得到相同的值.这两个案件有什么不同吗?

grails gsp

11
推荐指数
1
解决办法
1238
查看次数

在客户端或服务器端拦截Grails GSP操作

Grails 2.4.5在这里.我正在尝试为我的GSP实现以下UX行为:

  • 如果用户有权点击按钮,那么他们可以这样做; 然而
  • 如果用户没有点击按钮的权限,那么当他们点击按钮时,屏幕顶部会出现横幅消息(闪烁?),玫瑰/粉红色/红色背景表示" 您没有权限"采取这个行动 '

要确定用户是否具有所需权限,我可以从Groovy和GSP/taglib层访问功能.

从Groovy/controller层:

SecurityUtils.hasPermission(String permission)
Ex: SecurityUtils.hasPermission('UPDATE_BUZZ')
Run Code Online (Sandbox Code Playgroud)

从GSP/taglib层:

<sec:hasPermission permission="<permission name>">???</sec:hasPermission>
Ex: <sec:hasPermission permission="UPDATE_BUZZ">???</sec:hasPermission>
Run Code Online (Sandbox Code Playgroud)

因此,给定这两种可用的访问检查机制,并给出以下控制器:

class FizzController {
    BuzzService BuzzService

    def buzz() {
        SomeData dataModel = buzzService.getModel(params)
        render(view: 'buzz', model: [ dataModel: dataModel ])
    }
}
Run Code Online (Sandbox Code Playgroud)

......在哪里buzz.gsp:

<!-- Lots of HTML/GSP here -->
<g:submitButton name="update" value="Update" />
<!-- Lots more HTML/GSP down here -->
Run Code Online (Sandbox Code Playgroud)

鉴于这一切,我的问题是:我应该如何/在哪里:(1)响应' update'按钮的点击处理程序,(2)执行访问检查,以及(3)呈现错误/横幅/ flash消息?代码示例(甚至伪代码)将是最棒的!

grails groovy taglib gsp

11
推荐指数
1
解决办法
467
查看次数

Grails"render"呈现模板

在我的Grails控制器中,我正在响应一个AJAX调用并使用render返回文本:

def ajaxRandomPersonName = {
    def person = get a random person ...
    render "Name: ${person.name}"
}
Run Code Online (Sandbox Code Playgroud)

问题是render呈现整个模板.因此,它不是仅渲染"Name:John",而是呈现模板中定义的所有图标,导航等.如何在render没有模板的情况下进行渲染?

我几乎使用Grails 1.1.1来关注"Grails in Action"(第28页)的第1章.

跟进:根据Rhysyngsun的建议返回错误没有影响.我也尝试将模板设置为null但它仍然呈现模板:

def ajaxRandomPersonName = {
    def person = get a random person ...
    render (template:null, text:"Name: ${person.name}")
}
Run Code Online (Sandbox Code Playgroud)

render 无论我做什么,都会全心全意地通过模板渲染它.

后续2:关于grails-user邮件列表的并行讨论.

后续3:示例代码:我将我的代码配对最低限度,它仍然展示了不需要的模板渲染.

控制器/ PersonController.groovy:

class PersonController { 
    def index = { } 
    def home = { [message:"Hello"] } 

    def ajaxTest = { 
        println "ajaxTest called" 
        render text: …
Run Code Online (Sandbox Code Playgroud)

grails gsp

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

使用grails标记有条件地向html元素添加类

使用标签,您可以在gsp中执行此操作:

<g:if test="${someBean?.aCondition}">
  <div class="aSection">
  ...
  </div>
</g:if>
Run Code Online (Sandbox Code Playgroud)

我真正想做的是添加第二个'类',它包含'display:none'或'display:block'属性,基于'$ {someBean?.aCondition}'的值.

最终的HTML会这样:

<div class="aSection hiddenItem">
...
</div>
Run Code Online (Sandbox Code Playgroud)

(如果$ {someBean?.aCondition}为真,div将为其类设置'shownItem')

相应的css:

.shownItem
{
  display: block;
}
.hiddenItem
{
  display: none;
}
Run Code Online (Sandbox Code Playgroud)

有什么好办法实现这个目标?

grails gsp

10
推荐指数
2
解决办法
6547
查看次数

Grails和gsp:如何使用相同的模型/ bean呈现嵌套模板?

也许我只是在问google&co.错误的问题,但这是我想要完成的:

我有一个带有嵌套模板的GSP模板.外部实体可以访问域类实例的成员.而不是像所有域名成员一样传递

<g:render template="/image/alternativeTemplate" model="${[member1: member1, member2: member2]}"/>
Run Code Online (Sandbox Code Playgroud)

或使用迭代器之类的

<g:render template="/image/alternativeTemplate" model="${[it: it]}"/>
Run Code Online (Sandbox Code Playgroud)

我想在内部使用外部GSP模型.

我错过了什么吗?

问候,smon

grails templates nested render gsp

10
推荐指数
1
解决办法
5314
查看次数

ERROR errors.GrailsExceptionResolver - 处理请求时发生ConcurrentModificationException:

我有一个Grails 2.4.5 GSP页面,它加载了两个iFrame:

<iframe scrolling="no"
            src="${createLink(controller:'admin', action:'page1', id: serviceCard.id)}"></iframe>
<iframe scrolling="no"
            src="${createLink(controller:'admin', action:'page2', id: serviceCard.id)}"></iframe>
Run Code Online (Sandbox Code Playgroud)

每两次重新加载后,我有以下问题.请注意,这不会一直发生.

在我的GSP上,我看到错误500.控制台显示以下错误:

2015-08-01 21:41:11,530 [http-nio-8080-exec-3] ERROR errors.GrailsExceptionResolver  - ConcurrentModificationException occurred when processing request: [GET] /test/adminServiceCard/previewCard/4b6dc4730fd3acd80a
Stacktrace follows:
Message: Error processing GroovyPageView: Error executing tag <asset:stylesheet>: null
    Line | Method
->>  527 | doFilter         in /grails-app/views/adminServiceCard/previewCard.gsp
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - …
Run Code Online (Sandbox Code Playgroud)

html grails gsp

10
推荐指数
1
解决办法
2070
查看次数

在没有Grails的普通Spring MVC中使用GSP视图

我想在一个普通的Spring MVC应用程序中使用GSP视图而不是JSP/JSTL视图.我已经将groovy.servlet.TemplateServlet添加到web.xml,如下所示:

<servlet>
    <servlet-name>GroovyTemplate</servlet-name>
    <servlet-class>groovy.servlet.TemplateServlet</servlet-class>
    <init-param>
            <param-name>template.engine</param-name>
            <param-value>groovy.text.GStringTemplateEngine</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>GroovyTemplate</servlet-name>
    <url-pattern>*.gsp</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

并设置一个Spring InternalResourceViewResolver来加载GPS文件.到目前为止一切正常,但是为了将模型中的值暴露给模板,我必须做一些技巧(继承TemplateServlet并将它们添加到ServletBinding中).

现在我的下一个障碍是默认情况下JSTL在使用c:out标记时转义XML,Grails有编解码器的概念来自动转义GSP中使用的值.默认情况下,上述模板方法不会逃脱,这需要开发人员非常小心地避免XSS漏洞.

是否有另一种(更好的)使用GSP的方法,包括在不使用Grails的普通Spring MVC应用程序中自动转义?

java groovy spring spring-mvc gsp

9
推荐指数
1
解决办法
3848
查看次数

是否可以在GSP中声明一个函数?

如何在GSP中声明一个函数?我需要像taglib这样的东西,但在GSP中声明 - 外面没关系

groovy jsp-tags gsp

9
推荐指数
2
解决办法
3397
查看次数

在GSP中导入和使用groovy代码

我试图在GSP中使用groovy函数.请帮忙,因为我要把头发弄到这里.

在我的GSP的顶部,我有 <%@ page import = company.ConstantsFile %>

在我的GSP里面我有

<p>
I have been in the heating and cooling business for <%(ConstantsFile.daysBetween())%>
</p>
Run Code Online (Sandbox Code Playgroud)

和我的ConstantsFile.groovy

package company

import static java.util.Calendar.*

class ConstantsFile {

    def daysBetween() {
        def startDate = Calendar.instance
        def m = [:]
        m[YEAR] = 2004
        m[MONTH] = "JUNE"
        m[DATE] = 26
        startDate.set(m)
        def today = Calendar.instance

        render today - startDate
    }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试将renter更改为puts,system.out等,但这不是我的主要问题.

Error 500: Internal Server Error
URI
/company/
Class
java.lang.NullPointerException
Message
Cannot invoke method daysBetween() on null object …
Run Code Online (Sandbox Code Playgroud)

import grails groovy gsp

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

标签 统计

gsp ×10

grails ×8

groovy ×4

taglib ×2

html ×1

import ×1

java ×1

jsp-tags ×1

nested ×1

render ×1

spring ×1

spring-mvc ×1

templates ×1