Java 从JSF切换到JSP2 EL的奇怪行为
我正在学习JSF,并尝试在EL上实现一个小练习(使用JSF页面和JSP2)。我发现了一种奇怪的行为,完全不知道背后的原因。请在下面找到我的代码和场景 支持bean类Java 从JSF切换到JSP2 EL的奇怪行为,java,jsp,jsf,el,jsf-1.2,Java,Jsp,Jsf,El,Jsf 1.2,我正在学习JSF,并尝试在EL上实现一个小练习(使用JSF页面和JSP2)。我发现了一种奇怪的行为,完全不知道背后的原因。请在下面找到我的代码和场景 支持bean类 package task2; public class FavortiteColors_1 { private String firstName = "Tarun"; public String getFirstName() { return firstName; } public void
package task2;
public class FavortiteColors_1 {
private String firstName = "Tarun";
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
}
<managed-bean>
<managed-bean-name>favColors_1</managed-bean-name>
<managed-bean-class>task2.FavortiteColors_1</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
下面是此示例所需的faces配置xml的快照
Faces config.xml
package task2;
public class FavortiteColors_1 {
private String firstName = "Tarun";
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
}
<managed-bean>
<managed-bean-name>favColors_1</managed-bean-name>
<managed-bean-class>task2.FavortiteColors_1</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
有了这个背景,下面是我的问题
Q1:我正在尝试使用JSF1EL和JSP2EL从支持bean获取字符串。我正在尝试使用三个表达式获取名称。第一个和第三个是JSP2 EL,有趣的是第一个无法获取第三个的名称(使用完全相同的语法可以获取名称。使用SOP,我得到的结论是第一个表达式无法触发支持bean,而第二个和第三个表达式正在成功地触发支持bean。为什么会发生这种情况?期待您的解释
关于Tarun您的jsp代码格式不正确。抱歉,我是新到论坛的,所以我不知道提问的协议。jsp没有提供编译问题。只是输出不符合预期。请详细说明“您的jsp代码格式不正确”是什么意思我的意思是,标记没有被正确地关闭,是吗?看看
li
和br
标记。除此之外,如果你想进入JSF,我强烈建议你摆脱Scriptlet,使用jstl。Scriptlet是一种古老的技术,应该避免,因为它将纯Java代码注入视图文件(facelets或jsp)不鼓励使用。请看这个JSF(或您的JSF实现)自动创建支持bean,并/或在第一次请求它们时将它们放在请求范围内。这可能是您第一次使用JSF EL时发生的情况。也就是说,这是一个您一开始就不应该真正关心的实现细节。混合使用JSP、JSF和(哦,天哪)同一页面中的Scriptlet可能没有任何有用的指定行为,这主要是因为JSF生命周期相当复杂,JSP执行模型实际上根本不能很好地使用它(这就是我们现在使用Facelet的原因)