- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我第一次尝试在 Eclipse 中使用 JSF 2.0 模板,但遇到了问题。
原始的index.xhtml
页面工作正常,当我单击按钮时,一切正常。但是,如果我更改索引页以使其使用模板文件,它将不再正常工作。修改后的 index.xhtml
页面在这里:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
template="/templates/main-template.xhtml">
<ui:define name="title">
Simulator using JSF 2.0 - Test Version 2
</ui:define>
<ui:define name="header">
Home Page of the Simulator using JSF 2.0 - Test Version 2
</ui:define>
<ui:define name="body">
Click on the button to select the required option
<h:outputText value="and login" rendered="#{!login.loggedIn}"/>
<h:form prependId="false">
<h:commandButton value="Option 1" action="#{login.option1}"/>
<h:commandButton value="Option 2" action="#{login.option2}"/>
<h:commandButton value="Option 3" action="#{login.option3}"/>
<h:commandButton value="Logout" disabled="#{!login.loggedIn}" action="#{login.logout}"/>
</h:form>
</ui:define>
</ui:composition>
模板文件 main.template.xhtml
位于子文件夹 templates 中:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>
<ui:insert name="title">Title</ui:insert>
</title>
</h:head>
<h:body>
<ui:insert name="header">Header</ui:insert>
<br/>
We are in template.xhtml
<br/>
<ui:insert name="body">Body</ui:insert>
</h:body>
</html>
如果我删除index.xhtml中带有“h”标签的所有代码,该文件会正确拾取templates/main-template.xhtml中的代码,因此路径是正确的。但是,如果我包含带有“h”标签的代码(如下所示),Eclipse 会提示标签无法识别并且页面失败。
如果我在顶部包含行 xmlns:h="http://java.sun.com/jsf/html"
,那么 Eclipse 会识别“h”标签并且页面会正确呈现,但当我单击按钮时应用程序会失败,并返回错误:
javax.servlet.ServletException: javax.el.PropertyNotFoundException: /index.xhtml @15,68 action="#{login.option1}": Target Unreachable, identifier 'login' resolved to null
也许模板文件中的 xmlns:h="http://java.sun.com/jsf/html"
行把事情弄乱了,但模板的整体思想是在模板文件中包含尽可能多的通用代码。
有人知道发生了什么事吗?解决方案是什么?
web.xml
和 faces-config.xml
是标准的,不需要对它们做任何事情。
最佳答案
您关于模板应如何工作的想法似乎是正确的,但有一些要点我们应该澄清。也许这会对您有所帮助:
命名空间
关于命名空间,每当您在页面中使用标签库时,都应该声明它的命名空间。即使您正在使用模板并且已在模板中声明它们。如果有帮助的话,您可以认为命名空间声明不是继承的。
在本例中,我看到您的 index.xhtml
页面正在使用 h:commandButton
但尚未声明其命名空间。
bean 类
要让 EL
找到 Bean,您应该具有以下内容:
使用 @ManagedBean
注释的类,从 javax.faces.bean.ManagedBean
包导入,如下所示:
import javax.faces.bean.ManagedBean;
@ManagedBean
@ViewScoped
public class Login
{
// ...
}
在这种情况下,按照惯例,EL
应该通过名称 login
找到您的 Bean。 (将类(class)名称的第一个字母取消大写)
或者您可以给它一个名称:
import javax.faces.bean.ManagedBean;
@ManagedBean(name="login")
@ViewScoped
public class MyLoginBean
{
// ...
}
在本例中,按照惯例,它将被称为 myLoginBean
,但我们给了它一个名称,在本例中为 login
,因此 EL
应该通过名称 login
找到它。
如果您想使用 CDI 而不是普通的 JSF,您可以使用 @Named
注释来定义 EL
如何找到您的 bean,并遵循相同的命名约定。
import javax.inject.Named;
import javax.enterprise.context.RequestScoped;
@Named(value="login")
@RequestScoped
public class MyLoginBean
{
// ...
}
请记住,您希望 EL
查找和更改的数据必须具有正确的 getter 和 setter。
提示
我建议您创建更简单的代码来测试功能。在这种情况下,您可以首先测试模板,然后测试 bean、操作等...
希望对您有所帮助。
关于java - JavaServer Faces 2.0 中的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12884244/
我对 JavaServer Faces 有一些可能常见的想法(JSF)我想澄清一下。 是否可以仅添加 Java 类并从 JSF (x) 页面调用其中的方法? 我不明白当您进行 Java 编程和开发 W
我正在尝试建立一个使用 JSF 构建的挪威语版本的网站。我知道如何根据设置的区域设置显示我自己的消息,但我在使用默认消息时遇到了问题(例如,当表单输入无效时)。据我所知,不支持挪威语。 有谁知道我该如
当我们谈到 View 技术时,我们指的是用于创建 JSP 或 Facelets 等网页的框架吗?实际上,在 MVC 模式中,它是渲染 VIEW 的 PDL 吗? 在一些 Java EE 书籍中,MOD
我有以下问题: 首先,我知道(并且有一些学术经验)JSP 和 Struts,但我对 JSF 一无所知。 有一个项目已经用小程序做了前端。 我被要求研究将其更改/升级为 JSF。 所以我的问题是,这是一
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
我想知道为什么 WebKit 试图将我的页面呈现为 XML 而不是 HTML。我为所有可用的 Android SDK 版本尝试了这个问题(通过模拟器和真实设备),并且仅自带有 WebKit/533.1
我有一个 JSF我正在转换为使用 web 服务而不是直接进行数据库查询的应用程序。有一些非常长的列表,before 可以通过简单的 SQL 查询轻松返回。我想弄清楚如何使用 JSF/web 服务实现分
我有一个关于 JavaServer Faces 的问题。关于该技术的 ( Wikipedia page ) 声称 JSF 1.2 之前(并包括)的所有版本都已弃用。是否有任何官方数据支持这种说法?我用
我有一个页面:http://mypage.com/items.jsf . 此页面认为以下内容是理所当然的: ID 通过 GET 设置或 ID 通过 POST 设置。 现在,我可以手动调用 items.
我正在使用 Ubuntu 虚拟机。我需要根据网络浏览器提交的数据创建一个 HTML 文件。 这是 index.html 的 HTML: My First JSP Application Plea
我第一次尝试在 Eclipse 中使用 JSF 2.0 模板,但遇到了问题。 原始的index.xhtml页面工作正常,当我单击按钮时,一切正常。但是,如果我更改索引页以使其使用模板文件,它将不再正常
我见过的所有教程似乎都使用*.jsf , *.faces ,或//* Java Server faces servlet 映射中的 url-pattern。是否有一些官方 Sun 推荐的命名约定或事实
我们正在研究对已经使用了4年以上的Java业务管理Web服务进行重新设计。该软件的内部体系结构都是自定义构建的,并且表示层和业务逻辑之间存在严重的分离。同样,整个模型层已经证明不能有效地跟上不断变化的
总结 当我尝试从 Eclipse 中(在 Tomcat 7.0 上)运行 JSF 2.0 应用程序时,出现以下异常: Problem: SEVERE: Error configuring applic
我是 OpenERP 的新手,正在尝试。我的计划是将 OpenERP 连接到 SOAP Web 服务。因此,OpenERP 只支持 XML-RPC 我会用 Java 写一个转换器。我可以从 Java
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭12 年前。 Improve th
我目前正在学习一本书中的教程,它指示使用 Visual JavaServer Faces 框架创建 Java Web 应用程序。书中的屏幕截图显示了 JavaServer Faces 框架和额外的 V
请问有什么区别:- Spring 支柱 Struts 2 hibernate JavaServer Faces JavaServer 页面 挂毯 这些技术/框架是否相互补充?或者它们是彼此的替代品(在
在 GlassFish 4 上将项目从 JavaServer Faces 2.1/Java EE 5 迁移到 JavaServer Faces 2.2/Java EE 7 Web 配置文件时,我遇到了
我正在尝试重新创建 this old NetBeans hibernate-webapp tutorial 。该项目所做的只是使用 JSF 托管 bean 从 MySQL 数据库检索数据。 我遇到以下
我是一名优秀的程序员,十分优秀!