0
カスタムタグを作成するためにjstlを使用しています。私は、ロケーションタグを使用しています。ここjstlカスタムタグの質問 - c:out、タグパラメータ、reduceコードを無視する
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ attribute name="id" required="true" %>
<%@ attribute name="locationType" required="false" %>
<br/>
<c:out value="${param.id}" /> <---THIS ALWAYS PRINTS NOTHING! WHY?
<br/>
<c:out value="${param.locationType}" /> <---THIS ALWAYS PRINTS NOTHING! WHY?
<br/>
<c:if test="${empty param.locationType}" >
<select id="<c:out value="${param.id}" />_locationTypeSelect">
<option value="ADDRESS">כתובת</option>
<option value="INSTITUTE">מוסד</option>
</select>
<script type="text/javascript">
$(document).ready(function() {
$('<c:out value="${param.id}" />_locationTypeSelect').change(function() {
switch($(this).val()) {
case 'ADDRESS':
$('<c:out value="${param.id}" />_addressCitySelect').show();
$('<c:out value="${param.id}" />_addressStreetSelect').show();
$('<c:out value="${param.id}" />_addressHouseNumberInput').show();
$('<c:out value="${param.id}" />_instituteNameSelect').hide();
$('<c:out value="${param.id}" />_instituteBranchSelect').hide();
break;
case 'INSTITUTE':
$('<c:out value="${param.id}" />_addressCitySelect').hide();
$('<c:out value="${param.id}" />_addressStreetSelect').hide();
$('<c:out value="${param.id}" />_addressHouseNumberInput').hide();
$('<c:out value="${param.id}" />_instituteNameSelect').show();
$('<c:out value="${param.id}" />_instituteBranchSelect').show();
break;
}
});
});
</script>
</c:if>
<c:if test="${empty param.locationType or param.locationType == 'ADDRESS'}" >
<select id="<c:out value="${param.id}" />_addressCitySelect"></select>
<select id="<c:out value="${param.id}" />_addressStreetSelect"></select>
<input type="text" id="<c:out value="${param.id}" />_addressHouseNumberInput"/>
</c:if>
<c:if test="${empty param.locationType or param.locationType == 'INSTITUTE'}" >
<select id="<c:out value="${param.id}" />_instituteNameSelect"></select>
<select id="<c:out value="${param.id}" />_instituteBranchSelect"></select>
</c:if>
:要素の生成されたIDは、接頭辞<c:out value="${param.id}" />
を持っていないいくつかの理由から
<h:location id="a" locationType="ADDRESS"></h:location>
<h:location id="b"></h:location>
- ここlocation.tagのコンテンツがあります。たとえば、location.tagで私は
<input type="text" id="<c:out value="${param.id}" />_addressHouseNumberInput"/>
を書いたが、両方の用途の結果は<input type="text" id="_addressHouseNumberInput"/>
(c:out
は無視される)何が問題なのですか? - どちらの用途でも、html結果は同じです。パラメータlocationTypeを認識し、なぜ私はここにコードの重複がたくさんある
- たとえば、すべてのIDの接頭辞ということです。?。。
<c:out value="${param.id}" />
コードの量を減らすためにどのような方法があります
el式とは何ですか? – Naor
@Naor:EL =式言語、JSP 2.0以降はJSP標準の一部であり、ページで直接使用できるので、 'c:out'を省略して' $ {id} 'だけを使うことができます。 –