2013-03-27 54 views
4

如何從Velocity模板腳本(VTL)中拋出用戶定義的異常?如何從Velocity模板腳本(VTL)中拋出用戶定義的異常?

從我的速度腳本中,我需要根據條件拋出異常,以便調用者可以捕獲異常並向最終用戶提供有用的錯誤消息。

對於實施例。

#if($passwordfield1 != $passwordfield2) 
throw an exception here 
#elseif($passwordfield1 == $passwordfield2) 
do something 
#end 

在上面的例子中,如果passwordfield1和passwordfield2不匹配,一個適當的異常應甩並且需要被傳播到最終用戶。

有沒有什麼辦法可以通過速度腳本實現這一點?如果不是,請建議一種替代方法。

回答

2
context.put("exceptionThrower", new ExceptionThrower()); 

public class ExceptionThrower { 
    public void throwUserDefined() { 
     throw new UserDefinedException(); 
    } 
} 

#if ($whatever) 
$exceptionThrower.throwUserDefined() 
#else 
blah blah 
#end 
+0

請問您能否提供更多的細節?在我的模板中,java代碼直接輸出。它需要以某種方式逃脫嗎? – RonanOD 2015-05-29 17:48:00

+1

這是三段獨立的代碼。第二個是獨立的Java類。 1st是該類的實例化並插入到Velocity上下文中。第三個是你如何在模板中使用這樣的工具。 不要只將這一切插入到您的模板中。只有第三部分是VTL。 – 2015-06-01 16:55:01