我有一个相当简单(我希望:P)的问题。
我知道在旧的Java servlet代码中,我可以得到进入Web服务器的请求的完整请求路径,如下所示:
String requestBaseUrl =
String.format("%s://%s:%s%s", request.getScheme(), request.getServerName(),
request.getServerPort(), request.getContextPath());
现在,在JSP中执行完全相同的操作非常简单。但是,我现在必须在Velocity 1.5模板中执行此操作。具体来说,我需要输出该信息作为我需要集成到我的Web应用程序中的webstart applet的“codebase”属性。
我尝试了这个,但applet拒绝启动,而是抛出FileNotFoundException:P
<script src="http://www.java.com/js/deployJava.js"></script>
<script>
var attributes = { code:'org.groundhog.MyApplet', width:360, height:280} ;
var parameters = {
jnlp_href: './webstart/myapplet.jnlp', <------------------ this
bgColor: '#4f616d', mayscript: true
};
deployJava.runApplet(attributes, parameters, '1.6');
所以我认为最可靠的方法是派生并坚持运行应用程序的绝对URL,并使用与我之前的Java代码片段相同的逻辑从那里引用applet的jnlp文件。
现在我正在翻阅Velocity的文档。但是,如果有人不得不处理类似的事情,我会感谢Velocity中的等价习惯。
感谢您的时间和帮助!
答案 0 :(得分:1)
好吧,在经过短暂的思维清理之后,我开始意识到,Velocity本质上只是一个文本模板引擎,并且在其视图中应该没有做任何代码欺骗的事情。马特的评论刚刚证实了我的怀疑;)。谢谢!
最简单的方法是首先在我的控制器对象中派生代码库URL,然后将其放入模板的模型中(比如,一个名为“codeBaseUrl”的变量),然后让Velocity渲染它。简而言之,就是上述两种方法的结合。
我向我道歉,因为我再次意识到8小时的睡眠几乎可以解决任何问题。 :P
感谢您的时间。