为什么这两个JSP文件有区别?

时间:2014-08-06 07:54:10

标签: java jsp jstl

我有以下JSP。

 <s:form id="cursorWait" theme="vs" action="list" method="get" acceptcharset="utf-8">
    <div class="chckbox">
        <s:checkbox id="as" name="as" />
        &nbsp;
        <quartzi:text name="ts" />
    </div>
    <div class="chckbox">
        <s:checkbox id="aec" name="aec" />
        &nbsp;
        <quartzi:text name="tec" /> 
    </div>
    <div class="chckbox">
        <s:checkbox id="aua" name="aua" />
        &nbsp;
        <quartzi:text name="tua" />
        <br/>
        <br/>
    </div>

    <s:select name="seekRA" list="listeChoixRA" value="%{seekRA}" emptyOption="true"/>
    <s:textfield id="numAff" name="seekCode" key="numeroaffaire" />
    <s:textfield id="libAff" name="seekLibelleText" key="libelle" />
    <s:a href="#" cssClass="action_effacer_sans_label" title="%{getText('effacer')}" onClick="gomme()"></s:a>   
    <s:hidden name="firstSearch" value="done" />
    <s:submit id="recherche" key="rechercher" cssClass="wait"/>

</s:form>
<jsp:include page="inc_complex_search.jsp"/>

三个div复选框对其他文件是多余的,所以我决定将它们放在我包含的JSP文件中。我的页面变为:

<s:form id="cursorWait" theme="vs" action="list" method="get" acceptcharset="utf-8">

<jsp:include page="inc_checkbox_entity.jsp"/>

<s:select name="seekRA" list="listeChoixRA" value="%{seekRA}" emptyOption="true"/>
<s:textfield id="numAff" name="seekCode" key="numeroaffaire" />
<s:textfield id="libAff" name="seekLibelleText" key="libelle" />
<s:a href="#" cssClass="action_effacer_sans_label" title="%{getText('effacer')}" onClick="gomme()"></s:a>   
<s:hidden name="firstSearch" value="done" />
<s:submit id="recherche" key="rechercher" cssClass="wait"/>

</s:form>
<jsp:include page="inc_complex_search.jsp"/>

inc_checkbox_entity.jsp

<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<%@ taglib prefix="q" uri="/WEB-INF/tlds/q.tld"%>

<div class="chckbox">
    <s:checkbox id="as" name="as" />
    &nbsp;
    <q:text name="toutessocietes" />
</div>
<div class="chckbox">
    <s:checkbox id="aec" name="aec" />
    &nbsp;
    <quartzi:text name="tec" />
</div>
<div class="chckbox">
    <s:checkbox id="aua" name="aua" />
    &nbsp;
    <quartzi:text name="tua" />
</div>

结果是......不同...... 而且我不明白为什么。 这两段代码不应该生成相同的页面吗?是什么让他们与众不同?

以下是截图: The broken screen

如果我在主JSP中有代码,而不是使用include,那么搜索实体就在“société..Unitésanalytiques”块下并与之对齐。

PS: 我试过用

<c:import url="inc_checkbox_entity.jsp"/>
but in this case the part between:
    <s:select...
and <s:submit...

不再出现了。

1 个答案:

答案 0 :(得分:0)

如果您使用<jsp:include>,则应该包含一个jsp片段。但是您的自定义标签并不适合包含在内。因此,您可能希望修改jsp片段,以便使用<jsp:include>标记。

<%@ taglib prefix="q" uri="/WEB-INF/tlds/q.tld"%>

<div class="chckbox">
    <input type="checkbox" id="as" name="as" value="${as}"/>
    &nbsp;
    <q:text name="toutessocietes" />
</div>
<div class="chckbox">
    <input type="checkbox" id="aec" name="aec" value="${aec}"/>
    &nbsp;
    <quartzi:text name="tec" />
</div>
<div class="chckbox">
    <input type="checkbox" id="aua" name="aua" value="${aua}"/>
    &nbsp;
    <quartzi:text name="tua" />
</div>

某些自定义标记也可能无效,如果可能,最好使用JSP内容删除/替换它们。