1

有人对此有任何想法吗?我有一个模板 _contact.gsp 呈现为视图右侧的列。以下是它的代码:

 <div id="contact-${contactType.id}" class="contact" style="${contactType.isPrimary == 1 ? '' : 'display: none;'}">

<g:hiddenField name="contact-${contactType?.id}.id" value="${contact?.id}"/>

<g:applyLayout name="form/input">
    <content tag="label"><g:message code="prompt.organization.name"/></content>
    <content tag="label.for">contact-${contactType?.id}.organizationName</content>


<g:form  id="form-org" action="search">// this tag is not rendered


          <input type="text" id="Company" value="search for..." name="Company" class="field">        

</g:form>        

</g:applyLayout><div> 

<label style="visibility:hidden" for="PRIVATE" class="lb">-------------------------------------</label><a onclick="$('#form-org').submit()" style="display:inline"><img src="/jbilling/images/icon-search.gif"></a></div>

 <g:applyLayout name="form/input">
    <content tag="label"><g:message code="prompt.first.name"/></content>
    <content tag="label.for">contact-${contactType?.id}.firstName</content>
    <g:textField class="field" name="contact-${contactType?.id}.firstName" value="${contact?.firstName}" />
</g:applyLayout>

<g:applyLayout name="form/input">
    <content tag="label"><g:message code="prompt.last.name"/></content>
    <content tag="label.for">contact-${contactType?.id}.lastName</content>
    <g:textField class="field" name="contact-${contactType?.id}.lastName" value="${contact?.lastName}" />
</g:applyLayout>

<g:applyLayout name="form/text">
    <content tag="label"><g:message code="prompt.phone.number"/></content>
    <content tag="label.for">contact-${contactType?.id}.phoneCountryCode</content>
    <span>
        <g:textField class="field" name="contact-${contactType?.id}.phoneCountryCode" value="${contact?.phoneCountryCode}" maxlength="3" size="2"/>
        -
        <g:textField class="field" name="contact-${contactType?.id}.phoneAreaCode" value="${contact?.phoneAreaCode}" maxlength="5" size="3"/>
        -
        <g:textField class="field" name="contact-${contactType?.id}.phoneNumber" value="${contact?.phoneNumber}" maxlength="10" size="8"/>
    </span>
</g:applyLayout>

<g:applyLayout name="form/input">
    <content tag="label"><g:message code="prompt.email"/></content>
    <content tag="label.for">contact-${contactType?.id}.email</content>
    <g:textField class="field" name="contact-${contactType?.id}.email" value="${contact?.email}" />
</g:applyLayout>

<g:applyLayout name="form/input">
    <content tag="label"><g:message code="prompt.address1"/></content>
    <content tag="label.for">contact-${contactType?.id}.address1</content>
    <g:textField class="field" name="contact-${contactType?.id}.address1" value="${contact?.address1}" />
</g:applyLayout>

<g:applyLayout name="form/input">
    <content tag="label"><g:message code="prompt.address2"/></content>
    <content tag="label.for">contact-${contactType?.id}.address2</content>
    <g:textField class="field" name="contact-${contactType?.id}.address2" value="${contact?.address2}" />
</g:applyLayout>

<g:applyLayout name="form/input">
    <content tag="label"><g:message code="prompt.city"/></content>
    <content tag="label.for">contact-${contactType?.id}.city</content>
    <g:textField class="field" name="contact-${contactType?.id}.city" value="${contact?.city}" />
</g:applyLayout>

<g:applyLayout name="form/input">
    <content tag="label"><g:message code="prompt.state"/></content>
    <content tag="label.for">contact-${contactType?.id}.stateProvince</content>
    <g:textField class="field" name="contact-${contactType?.id}.stateProvince" value="${contact?.stateProvince}" />
</g:applyLayout>

<g:applyLayout name="form/input">
    <content tag="label"><g:message code="prompt.zip"/></content>
    <content tag="label.for">contact-${contactType?.id}.postalCode</content>
    <g:textField class="field" name="contact-${contactType?.id}.postalCode" value="${contact?.postalCode}" />
</g:applyLayout>

<g:applyLayout name="form/select">
    <content tag="label"><g:message code="prompt.country"/></content>
    <content tag="label.for">contact-${contactType?.id}.countryCode</content>

    <g:select name="contact-${contactType?.id}.countryCode"
              from="${CountryDTO.list()}"
              optionKey="code"
              optionValue="${{ it.getDescription(session['language_id']) }}"
              noSelection="['': message(code: 'default.no.selection')]"
              value="${contact?.countryCode}"/>
</g:applyLayout>

<g:applyLayout name="form/checkbox">
    <content tag="label"><g:message code="prompt.include.in.notifications"/></content>
    <content tag="label.for">contact-${contactType?.id}.include</content>
    <g:checkBox class="cb checkbox" name="contact-${contactType?.id}.include" checked="${contact?.include}"/>
</g:applyLayout>
</div>

当我在firefox中运行此代码时,视图呈现正常,除了缺少表单标记。当单击按钮时,我在firebug中检查了这个没有响应。firebug显示源如下: 在firefox中呈现的视图源对应到包含 form 标签的 applyLayout 标签

<div class="row">  //notice this;form is absent  
<label for="contact-20.organizationName">Organization Name</label>
<div class="inp-bg ">

          <input type="text" class="field" name="Company" value="search for..." id="Company">        

</div>

由于这种从表单标记到 div 标记的转换,我的按钮不起作用。请帮助防止这种转换......

4

1 回答 1

2

好吧,ag:form不是由 Firefox 呈现的,而是由服务器中的 Grails 呈现的,它会将 HTML 发送form到浏览器。但是你应该知道浏览器会忽略嵌套表单,我猜这里就是这种情况。

Grails 可能正在呈现标签,而浏览器忽略它,因为它在另一个表单中。

您可以通过右键单击页面并选择查看源代码来检查是否是这种情况View Page Source——这将显示 Grails 的确切输出。

于 2013-11-04T10:41:02.920 回答