我有一个URL
这样的 http:/myDomain/ myWAR/myServletReceiver
我不希望最终用户知道我的 WAR 文件名或 Servlet 接收器名称。所以,我想我会将这个 URL 个性化为 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