我想在t:grid组件中显示一个项目列表,但我不知道为什么我会得到一个NP
我确信100%我正在重新调整的List不是空的.这是调用访问数据的方法的页面的java部分:
public class MyTelephones {
@Property
@SessionState
private User user;
@Property
@Persist
private Telephone telephone;
@Property
@Inject
private UserDataAccess userDataAccess;
public List<Telephone> showTelephones() {
return userDataAccess.getUsersTelephones(user.getName());
}
Run Code Online (Sandbox Code Playgroud)
这是带有应显示标记的页面:
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
<head>
<title>Show your telephones</title>
</head>
<body>
<h1>These are your telephones [${user.name}]</h1>
<t:grid source="${showTelephones()}" row="${telephone}"/>
<h3><t:pagelink t:page="Index">Go back!</t:pagelink></h3>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误?
[ERROR] pages.MyTelephones Render queue error in BeginRender[MyTelephones:grid.rows]: Failure writing parameter 'row' of component MyTelephones:grid.rows: Failure writing parameter 'row' of component MyTelephones:grid: java.lang.NullPointerException
org.apache.tapestry5.ioc.internal.util.TapestryException: Failure writing parameter …Run Code Online (Sandbox Code Playgroud) 我有两个问题:
1 - 在实体内的byte []变量中,我可以存储任何类型的文件(图像,pdf,mp3 ......),还是有任何限制?
2 - 变量需要什么注释?
我想选择具有特定属性的实体.检索整个实体不是一个选项,因为file返回的属性byte[]会降低应用程序的速度.然而它抛出ClassCastException.
这是实体:
@NamedQuery(name = "findAllGarbage", query = "SELECT g.filename, g.description, g.uploadDate FROM Garbage g;")
@Entity
public class Garbage {
@Id
@GeneratedValue
@Column(nullable = false)
private Long id;
@Column(nullable = false)
private String filename;
@Column(nullable = false)
private String fileType;
@Column(nullable = false)
private String uploadDate;
@Column(nullable = false)
private String destroyDate;
@Lob
@Column(nullable = false)
private byte[] file;
@Column(nullable = false)
private String description;
//Getters and Setters...
Run Code Online (Sandbox Code Playgroud)
这是用于数据访问的EJB.该方法findAllGarbage()是触发该方法的方法ClassCastException.
@Stateless(name = …Run Code Online (Sandbox Code Playgroud) 我的网络应用程序有一个在所有页面中使用的模板.我想在该模板中创建一个小标签(因此它随处可见),以显示用户当前登录的电子邮件.
我认为最好的方法是直接查看它是否存在于会话中,所以这就是我创建标签的方式:
<h:outputLabel id="usernameLabel"
value="#{FacesContext.getCurrentInstance().getExternalContext()
.getSessionMap().get("userRole")}" />
Run Code Online (Sandbox Code Playgroud)
代码在语法上不正确.如何以适当的方式编写它以实现我的目标?你认为这种方法是否正确?
可能重复:
finally块是否始终运行?
我了解到try catch语句的finally子句总是执行.但有些人告诉我,可以避免执行它(删除它不是一个选项).
- 有人怎么可能?
- 我很想知道为什么有人想避免执行它?
我正在学习创建自己的自定义标签,但我遇到了一些麻烦,我不能使这个简单的应用程序使用我创建的标签.我认为我做的一切都很好,但我担心我创建的新库的路径是错误的.也许有人可以帮助我找到我的错误所在并理解它的原因.这是我到目前为止所做的:
1-我将标签创建为xhtml块(mybutton.xhtml)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<ui:composition>
<h:commandButton type="submit" value="#{buttonSubmitLabel}" />
<h:commandButton type="reset" value="#{buttonResetLabel}" />
</ui:composition>
</html>
Run Code Online (Sandbox Code Playgroud)
2-然后我创建了一个.xml文件,它将充当我所有自定义标签都被编入索引的库(mytagsconfig.taglib.xml)
<?xml version="1.0"?>
<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
version="2.0">
<namespace>http://mytags.com/facelets</namespace>
<tag>
<tag-name>mybutton</tag-name>
<source>mytags/mybutton.xhtml</source>
</tag>
</facelet-taglib>
Run Code Online (Sandbox Code Playgroud)
3-我试图在web.xml中注册我的新库,所以我可以使用它
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>CHAPTER 5 Creating your own Custom tags</display-name>
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<!-- REGISTERING A CUSTOM TAG INTO …Run Code Online (Sandbox Code Playgroud)