所以,我安装了http://grails.org/plugin/jquery-ui ,使用 JQuery Datepicker 而不是默认的 Grails datepicker。
问题是,当 Controller 接收到值时,它给出null,我不知道如何获取该值。
案例 1. 我的 gsp 中有什么:
<input type="text" id="fechaEstimadaInicio" name="fechaInicio" value="${pasantiaCortaInstance?.fechaInicio}">
“fechaEstimadaInicio”是我的 JQuery Datepicker。
案例 2. 在使用 JQuery Datepicker 之前,我有这样的:
<g:datePicker relativeYears="[-7..7]" id="fechaEstimadaInicio" name="fechaInicio" precision="day" value="${pasantiaCortaInstance?.fechaInicio}" />
在我的 Controller 中我尝试了这个:
@Transactional
def save(PasantiaCorta pasantiaCortaInstance) {
println pasantiaCortaInstance.fechaInicio
}
在案例 1 中,它给出: 2014 年 3 月 28 日星期五 00:00:00 VET
情况 2:空
提前非常感谢
编辑:
Adavis 你的意思是这样的吗?
在 taglib 实验之前,我的 JQuery Datepicker 看起来像这样:
<g:field type="text" id="fechaDeAprobada" name="fechaDeAprobada" value="${pasantiaCortaInstance?.fechaAprobada}"></g:field>
在 JSScript 中:
...
$("#fechaDeAprobada").datepicker({
dateFormat : 'yy/mm/dd'
});
...
我创建了 TagLib,现在我使用的是 g:field
<g:jqDatePicker id="fechaDeAprobada" name="fechaDeAprobada" />
但它仍然像文本一样打印标签库 我没有改变任何东西
编辑2:
是的,它正在使用新的 example.gsp;但如果我尝试在静态脚手架中使用它,_form.gsp 和 create.gsp 就不起作用。
这是create.gsp中的形式
<g:form url="[resource:pasantiaCortaInstance, action:'save']" >
<fieldset class="form">
<g:render template="form"/>
</fieldset>
<fieldset class="buttons">
<g:submitButton name="create" class="save" value="${message(code: 'default.button.create.label', default: 'Create')}" />
</fieldset>
<g:jqDatePicker id="fechaEstimadaInicio" name="fechaInicio" class="datepicker" value="" />
</g:form>
在 _form.gsp 中:
<div
class="fieldcontain ${hasErrors(bean: pasantiaCortaInstance, field: 'fechaInicio', 'error')} required">
<label for="fechaInicio"> <g:message
code="pasantiaCorta.fechaInicio.label" default="Fecha Inicio" /> <span
class="required-indicator">*</span>
</label>
<g:jqDatePicker id="fechaEstimadaInicio" name="fechaInicio" class="datepicker" value="" />
</div>
完成,最后一个问题是“必需的”
最佳答案
我在我的项目中使用自定义标签库,这是从另一个在线版本修改的,但它支持包含“点”的日期名称,例如“myClass .fieldName”。另一个版本没有。
<g:jqDatePicker name="fechaInicio" class="datepicker" value="" />
class jqueryDatePickerTagLib {
def jqDatePicker = {attrs, body ->
def out = out
def name = attrs.name //The name attribute is required for the tag to work seamlessly with grails
def id = attrs.id ?: name
def minDate = attrs.minDate
def showDay = attrs.showDay
def val = attrs.value ?: ''
//Create date text field and supporting hidden text fields need by grails
out.println "<input type=\"text\" name=\"${name}\" id=\"${id}\" value=\"${val}\" class=\"datepicker input-small\"/>"
out.println "<input type=\"hidden\" name=\"${name}_day\" id=\"${id}_day\" />"
out.println "<input type=\"hidden\" name=\"${name}_month\" id=\"${id}_month\" />"
out.println "<input type=\"hidden\" name=\"${name}_year\" id=\"${id}_year\" />"
//Code to parse selected date into hidden fields required by grails
out.println "<script type=\"text/javascript\"> \$(document).ready(function(){"
out.println "\$(\"input[name='${name}']\").datepicker({"
out.println "onClose: function(dateText, inst) {"
out.println "\$(\"input[name='${name}']\").attr(\"value\",dateText);"
out.println "\$(\"input[name='${name}_month']\").attr(\"value\",new Date(dateText).getMonth() +1);"
out.println "\$(\"input[name='${name}_day']\").attr(\"value\",new Date(dateText).getDate());"
out.println "\$(\"input[name='${name}_year']\").attr(\"value\",new Date(dateText).getFullYear());"
out.println "}"
//If you want to customize using the jQuery UI events add an if block an attribute as follows
if(minDate != null){
out.println ","
out.println "minDate: ${minDate}"
}
if(showDay != null){
out.println ","
out.println "beforeShowDay: function(date){"
out.println "var day = date.getDay();"
out.println "return [day == ${showDay},\"\"];"
out.println "}"
}
out.println "});"
if (val != '') {
out.println("\n")
out.println "\$(\"input[name='${name}_month']\").attr(\"value\",new Date('${val}').getMonth() +1);"
out.println "\$(\"input[name='${name}_day']\").attr(\"value\",new Date('${val}').getDate());"
out.println "\$(\"input[name='${name}_year']\").attr(\"value\",new Date('${val}').getFullYear());"
}
out.println "})</script>"
}
}
关于grails - Grails 中的 JQuery Datepicker, Controller 接收 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22718198/