我这样有一个URL
http:/ myDomain / myWAR / myServletReceiver
我不希望最终用户知道我的WAR文件名,也不想知道Servlet Receiver名称。所以,我想我会将这个网址个性化为http:/ myDomain / MyAccount 。
我已添加以下代码来实现此目的。
创建了我自己的包。代码如下。
package myOwnPackage
import javax.el.ExpressionFactory;
import javax.el.ValueExpression;
import javax.faces.application.ViewHandler;
import javax.faces.context.FacesContext;
import com.sun.facelets.FaceletViewHandler;
public class DynamicViewHandler extends FaceletViewHandler{
public DynamicViewHandler(ViewHandler parent) {
super(parent);
System.out.println("Entered into DynamicViewHandler");
}
public String getActionURL(FacesContext context, String viewId) {
System.out.println("Inside getActionURL");
ExpressionFactory expressionFactory = context.getApplication().getExpressionFactory();
ValueExpression valueExpression = expressionFactory.createValueExpression(context.getELContext(), viewId, String.class);
String result = (String) valueExpression.getValue(context.getELContext());
System.out.println("Value of Result is:" +result);
//I am in the beginning steps and just want to print the value of "result" for each response
return result;
}
}
我在faces-config.xml
<application>
<view-handler>myOwnPackage.FaceletViewHandler</view-handler>
<state-manager>org.jboss.portletbridge.application.PortletStateManager</state-manager>
</application>
当我点击我的应用程序时,我的Servlet重定向到的欢迎页面是/jsp/html/index.xhtml
。
所以,在日志中,我得到了打印的值。
Entered into DynamicViewHandler
Value of Result is:/jsp/html/index.xhtml
index.jsf
页面中还有其他链接。当我点击其他链接时,我的浏览器会出现以下错误消息(而不是转到/jsp/html/secondPage.jsf
)
http:/myDomain/jsp/html/index.html not found (404) error.
我的DynamicViewHandler
,faces-config.xml
中肯定遗漏了一些东西,可能会更多。
我还缺少什么?
另外,我想将jsp/html/secondPage.jsf
映射到/MyAccount
答案 0 :(得分:1)
用于显示不同的网址而不是原始网址。
方法1:
你有一个文件名pretty-config.xml。
使用此文件,您可以显示除真实补丁之外的其他网址。
示例:
通过这两个简单的配置行,用户可以在浏览器URL和输出HTML中看到:pattern =“/ mySite /”,但服务器实际上正在渲染资源:/faces/sites/mySite.jsf页面在服务器上的实际位置。
您可以找到信息here http://ocpsoft.org/prettyfaces/
方法2:作为BalusC关于SO的建议
PrettyFaces仅适用于JSF。您需要Rewrite(仍然是测试版;这些日期Tuckey's URLRewriteFilter是最佳可用的)
答案 1 :(得分:0)
选项1: - 如果您使用的是httd服务,则可以使用mod_rewrite选项更改url模式 http://httpd.apache.org/docs/current/mod/mod_rewrite.html
选项2: -
正如jubinPatel所说,UrlRewriteFilter是更改网址格式的最佳选择。