我的gsp(Grails项目)中有一个输入标记字段,我希望在字段为空时使用占位符来显示一些文本:
<input type="text" name="textField" id="textField" value="${receiptInstance?.patient?.surname} ${receiptInstance?.patient?.name}" placeholder=<g:message code="patient.choose" default="Insert patient..." />/>
当我创建一个新对象时,value
不为空,但它有一个空格,因此不显示占位符。
如何更改此类行为以使用占位符?有没有办法消除value
中的空白?
答案 0 :(得分:2)
解决方法可以是:
<g:set var="myVal" value="${receiptInstance?.patient?.surname?:''} ${receiptInstance?.patient?.name?:''}"/>
<input type="text" name="textField" id="textField" value="${myVal?.trim()}" placeholder='<g:message code="patient.choose" default="Insert patient..." />'/>
注意: - 在我添加的占位符中添加'
。或者您也可以使用以下代码
<input type="text" name="textField" id="textField" value="${myVal?.trim()}" placeholder="${g.message(code: 'patient.choose', default: 'Insert Patient...')}"/>
答案 1 :(得分:0)
你可以这样做:
<g:set var="tmpValue" value="${receiptInstance?.patient?.surname} ${receiptInstance?.patient?.name}"/>
<g:textField name="textField"
value="${tmpValue.trim()}"
placeholder="${message(code: 'patient.choose', default:'Insert patient')}"/>
如果你想摆脱临时变量,你可以这样做:
<g:textField name="textField"
value="${(receiptInstance?.patient?.surname + ' ' + receiptInstance?.patient?.name).trim()}"
placeholder="${message(code: 'patient.choose', default:'Insert patient')}"/>
无论哪种方式,你都需要处理文字&#34; null&#34;如果receiptInstance?.patient?.surname或receiptInstance?.patient?.name,则显示为null。这很简单,但这是一个单独的问题,我已经把它留在了上面,以保持上面的代码集中在问题上。
我希望有所帮助。
修改强>
您还可以使用简单的标记来提供帮助:
// grails-app/taglib/com/demo/PatientTagLib.groovy
package com.demo
class PatientTagLib {
static defaultEncodeAs = [taglib:'html']
static namespace = 'patient'
def fullName = { attrs ->
def patient = attrs.patient
if(patient) {
def fullNameStr = patient.name ?: '' +
' ' +
patient.surname ?: ''
out << fullNameStr.trim()
}
}
}
然后在你的GSP中:
<g:textField name="textField"
value="${patient.fullName(patient: receiptInstance?.patient)}"
placeholder="${message(code: 'patient.choose', default:'Insert patient')}"/>
答案 2 :(得分:0)
可以使用.with()的一些魔力:
<input type="text" name="textField" id="textField" value="${receiptInstance?.patient?.with{surname +' '+ name}}" placeholder="<g:message code='patient.choose' default='Insert patient...' />"/>