在JSP

2013-11-22 24 views
1

將XML轉換選擇了一些,我有以下XML文件中的在JSP

<knowledgecases> 
<knowledgecase> 
<caseid>101000000009</caseid> 
<question>What can I put into my brown bin?</question> 
<version /> 
</knowledgecase> 
<knowledgecase> 
<caseid>101000000006</caseid> 
<question>What is ‘Scores on the Doors’?</question> 
<version /> 
</knowledgecase> 
</knowledgecases> 

我想1添加到caseids。

所以我已經試過這

<c:import var="xml" url="<%=theUrl%>"> 
<c:param name="param1" value="${param.param1}"/> 
<c:param name="param2" value="${param.param2}"/> 
</c:import> 
<body> 
<x:parse xml="${xml}" var="output"/> 
<ul class="list"> 
<x:forEach select="$output/knowledgecases/knowledgecase/caseid" var="newcaseid"> 
<c:set var="count" value="${newcaseid + 1}"/> 
<li>adjacent case <x:out select="$count" /></li> 
</x:forEach> 
</ul> 
</body> 

我希望它顯示

101000000010

101000000007

相反,我得到的錯誤

java.lang.IllegalArgumentException: Cannot convert [caseid: null] of type class com.sun.org.apache.xerces.internal.dom.DeferredElementNSImpl to Number 

如果我改變

value="${newcaseid + 1} to value="${newcaseid} 

它顯示

101000000009

101000000006

不知道我在做什麼錯

回答

0

newcaseid var是一個org.w3c.dom.Node,並能不能直接用於表達式語言。你必須首先將它轉換成EL可以使用的東西(一個數字或一個字符串)。

你可以把它像這樣工作的:

<x:parse xml="${xml}" var="output"/> 
<ul class="list"> 
    <x:forEach select="$output/knowledgecases/knowledgecase/caseid" var="newcaseid"> 
    <c:set var="current"><x:out select="$newcaseid"/></c:set> 
    <li>adjacent case <c:out value="${current + 1}" /></li> 
    </x:forEach> 
</ul> 
+0

感謝,這完美地工作。 – user1554759