2012-09-18 35 views

回答

2

您可以嘗試隱式地將一個字符串轉換爲數字,並使用c:catch捕獲任何異常(如果有的話)。例如:

<c:catch var="catchString"> 
    <c:set var="myString" value="${0 + 'asd1234'}" /> 
</c:catch> 
<c:if test="${not empty catchString}"> 
    <p>Failed: ${catchString}</p> 
</c:if> 

<c:catch var="catchNumber"> 
    <c:set var="myNumber" value="${0 + '1234'}" /> 
</c:catch> 
<c:if test="${not empty catchNumber}"> 
    <p>Failed: ${catchNumber}</p> 
</c:if> 

將輸出這樣的:

<p>Failed: java.lang.NumberFormatException: For input string: "asd1234"</p> 

如果你想阻止你可以使用fmt:formatNumber建立一個檢查花車檢查小數:

<c:set var="myFloat" value="12"/> 
<fmt:formatNumber value="${myFloat}" pattern="0" var="myInteger"/> 
<c:if test="${myInteger - myFloat eq 0}"> 
    <p>No decimals</p> 
</c:if> 

你當然可以將其與c:catch結合以捕捉數字格式例外。

<c:set var="myString" value="abc12.34"/> 
<c:catch> 
    <fmt:formatNumber value="${myString}" pattern="0" var="myInteger"/> 
    <c:set var="passed" value="${myInteger - myString eq 0}"/> 
</c:catch> 

<c:if test="${passed}"> 
    <p>Passed</p> 
</c:if> 

<c:if test="${not passed}"> 
    <p>Failed</p> 
</c:if> 
+0

嘿,哥們它工作!,tnxs。 – crsuarezf