gpt4 book ai didi

jsf-1.2 - 创建我自己的 ViewHandler 为进一步请求返回 404 错误

转载 作者:行者123 更新时间:2023-12-01 05:25:42 26 4
gpt4 key购买 nike

我有一个 URL这样 http:/myDomain/ myWAR/myServletReceiver

我不希望最终用户知道我的 WAR 文件名和 Servlet 接收器名称。所以,我想我会将这个 URL 个性化为 http://myDomain/ 之类的东西。我的账户 .

我在下面添加了一段代码来实现这一点。

创建了我自己的包。代码如下。

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

最佳答案

用于显示不同的 URL 而不是您的原始 URL。

方法一:

你有一个文件名pretty-config.xml。

使用此文件,您可以显示与真实补丁不同的 url。

例子:





通过这两行简单的配置,用户在浏览器 URL 和输出 HTML 中看到:pattern="/mySite/",但服务器实际上正在渲染资源:/faces/sites/mySite.jsf 的实际位置服务器上的页面。

您可以找到信息here http://ocpsoft.org/prettyfaces/

方法 2:作为 BalusC 对 SO 的建议

PrettyFaces 仅适用于 JSF。您需要 Rewrite (这仍然是测试版;现在 Tuckey's URLRewriteFilter 是最好的)

关于jsf-1.2 - 创建我自己的 ViewHandler 为进一步请求返回 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13974321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com