Pessoal to com um problema que é o seguinte eu tenho um JSF com um crud simples só que eu não sei porque , ele só funciona no escopo session, se alguém poder me ajudar eu agradeço.
Vou colocar os fontes que eu estou usando.
@ManagedBean(name="lessonBean")
@SessionScoped
public class LessonBean extends BaseBean {
/**
*
*/
private static final long serialVersionUID = 1L;
private List<Lesson> lessons;
private Lesson lesson;
private Course course;
private boolean editMode;
private Long idCourse;
private Long id;
@ManagedProperty("#{lessonService}")
private LessonService lessonService;
public Lesson getLesson() {
return lesson;
}
public void setLesson(Lesson lesson) {
Logger.error("setando o valor de curso!");
this.lesson = lesson;
}
public Course getCourse() {
return course;
}
public void setCourse(Course course) {
this.course = course;
}
public boolean isEditMode() {
return editMode;
}
public void setEditMode(boolean editMode) {
Logger.error("estou tentando alterar editMode >> "+editMode);
this.editMode = editMode;
}
public Long getId() {
return id;
}
public void setId(Long id) {
Logger.error("estou tentando alterar >> "+id);
this.id = id;
}
public LessonService getLessonService() {
return lessonService;
}
public void setLessonService(LessonService lessonService) {
this.lessonService = lessonService;
}
public Long getIdCourse() {
return idCourse;
}
public void setIdCourse(Long idCourse) {
this.idCourse = idCourse;
}
public List<Lesson> getLessons() {
return lessons;
}
public void setLessons(List<Lesson> lessons) {
this.lessons = lessons;
}
public void salvar(){
if(lesson != null){
Course course = new Course();
course.setId(idCourse);
lesson.setCourse(course);
lessonService.saveOrUpdateLesson(lesson);
lesson = new Lesson();
addInfoMessageFromKey("lessonSaved");
}
}
public void create(){
Logger.error("estou tentando criar !");
this.editMode = false;
lesson = new Lesson();
}
public List<Lesson> findLessons() {
if(course != null){
lessons = lessonService.findAllByCourse(course);
}
return lessons;
}
public void deleteLesson(){
Logger.error("entrei no delete!");
lessonService.deleteLesson(lesson);
addInfoMessageFromKey("lessonDeleted");
lesson = new Lesson();
}
public void editLesson(){
Logger.error("entrei no edit lesson");
this.editMode = true;
lesson = lessonService.findLesson(id);
}
public void handleFileUpload(FileUploadEvent event){
Logger.error("entrou aqui para salvar o arquivo!");
if(lesson != null){
byte[] image = event.getFile().getContents();
lesson.setImage(image);
Logger.error("entrou aqui para salvar o arquivo! e colocou a imagem >> "+event.getFile().getFileName());
}
}
}
Minha página jsf.
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
</h:head>
<ui:composition template="/templates/main.xhtml">
<ui:define name="content">
<h:body>
<p:growl id="messages" showDetail="false"/>
<div id="menu-cursos">
<div class="cognita-ui-menu-curso">
<h:outputText value="#{tit.registerCourse}" />
</div>
<div>
<h:form id="showformRegistrarCurso">
<p:commandLink id="showFormRegCurso" action="#{courseBean.create()}" onclick="dlg.show()" style="padding-left:20px;" immediate="true">
<div class="cognita-ui-icon cognita-ui-icon-new"></div>
</p:commandLink>
</h:form>
</div>
<p:dialog header="#{tit.registerCourse}"
widgetVar="dlg"
resizable="false"
modal="true"
>
<h:form id="formRegisterCourse" >
<h:panelGrid columns="2" style="margin-bottom:10px;">
<h:outputLabel for="courseName" value="#{msgs.courseName}" />
<h:inputText id="courseName" value="#{courseBean.course.name}" required="true" label="#{msgs.courseName}"/>
</h:panelGrid>
<p:commandButton id="registerCourse" value="#{msgs.enter}"
update=":formShowCourses"
oncomplete="dlg.hide();"
action="#{courseBean.salvar()}"
ajax="false"
/>
</h:form>
</p:dialog>
<p:dialog header="#{tit.updateCourse}"
widgetVar="dlgAlt"
resizable="false"
modal="true"
>
<h:form id="formAlterarCurso" prependId="false">
<h:panelGrid columns="2" style="margin-bottom:10px;">
<h:outputLabel for="courseAltName" value="#{msgs.courseName}" />
<h:inputText id="courseAltName" value="#{courseBean.course.name}" required="true" label="#{msgs.courseName}"/>
</h:panelGrid>
<p:commandButton id="updateCourse" value="#{msgs.enter}"
update=":formShowCourses"
oncomplete="dlgAlt.hide();"
action="#{courseBean.salvar()}"
ajax="false"
/>
</h:form>
</p:dialog>
<h:form id="formShowCourses">
<c:forEach items="#{courseBean.findCourses()}" var="course" >
<div>
<div id="cognita-ui-menu-curso" class="cognita-ui-menu-curso">
<p:commandLink update=":formShowLessons"
action="#{lessonBean.findLessons()}"
value="#{course.name}"
>
<f:setPropertyActionListener value="#{course}" target="#{lessonBean.course}" />
</p:commandLink>
</div>
<p:commandLink action="#{courseBean.deleteCourse()}"
onclick="if (!confirm('#{msgs.confirmDelete}')) return false"
><div class="cognita-ui-icon cognita-ui-icon-delete"></div>
<f:setPropertyActionListener value="#{course}" target="#{courseBean.course}" />
</p:commandLink>
<p:commandLink update=":formAlterarCurso"
onclick="dlgAlt.show()"
action="#{courseBean.editCourse()}"
> <div class="cognita-ui-icon cognita-ui-icon-edit"></div>
<f:setPropertyActionListener value="true" target="#{courseBean.editMode}" />
<f:setPropertyActionListener value="#{course.id}" target="#{courseBean.id}" />
</p:commandLink> <br/><br/>
</div>
</c:forEach>
</h:form>
</div>
<div>
<div class="cognita-ui-menu-curso">
<h:outputText value="#{tit.registerLesson}" />
</div>
<div style="float:top;padding-bottom:15px; " >
<h:form id="showformRegisterLesson">
<p:commandLink id="showFormRegAula"
action="#{lessonBean.create()}"
onclick="dlgLesson.show()"
style="padding-left:20px;"
immediate="true">
<div class="cognita-ui-icon cognita-ui-icon-new"></div>
</p:commandLink>
</h:form>
</div>
<p:dialog header="#{tit.registerLesson}"
widgetVar="dlgLesson"
resizable="false"
modal="true"
width="650"
>
<h:form id="formRegisterLesson" enctype="multipart/form-data">
<h:panelGrid columns="2" style="margin-bottom:10px">
<h:outputLabel for="lessonName" value="#{msgs.name}" style="font-weight:bold"/>
<h:inputText id="lessonName" value="#{lessonBean.lesson.name}" required="true" label="#{msgs.name}"/>
<h:outputLabel for="description" value="#{msgs.description}" style="font-weight:bold"/>
<p:inputTextarea id="description"
value="#{lessonBean.lesson.description}"
required="true"
label="#{msgs.description}"
style="width:550px;height:55px;"
autoResize="true"
rows="6"
cols="20"
maxlength="400"
counter="counter"
counterTemplate="{0} characters remaining"
/>
<h:outputText id="counter" />
<h:outputLabel for="image" value="#{msgs.image}" style="font-weight:bold"/>
<p:fileUpload id="image"
mode="advanced"
update="messageFile"
auto="true"
multiple="false"
label="#{msgs.image}"
fileUploadListener="#{lessonBean.handleFileUpload}"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
/>
<h:outputLabel for="codVideo" value="#{msgs.idvideo}" style="font-weight:bold"/>
<h:inputText id="codVideo" value="#{lessonBean.lesson.idVideo}" required="true" label="#{msgs.idvideo}"/>
<h:outputLabel for="cbCourse" value="#{msgs.course}" style="font-weight:bold"/>
<p:selectOneMenu id="cbCourse" value="#{lessonBean.idCourse}" required="true" label="#{msgs.course}" >
<f:selectItem itemLabel="#{msgs.selectone}" itemValue="" />
<f:selectItems value="#{courseBean.courses}" var="course" itemLabel="#{course.name}" itemValue="#{course.id}"/> se
</p:selectOneMenu>
<p:growl id="messageFile" showDetail="false"/>
</h:panelGrid>
<p:commandButton id="registerLesson" value="#{msgs.enter}"
update=":formShowLessons" action="#{lessonBean.salvar()}" ajax="false"/>
</h:form>
</p:dialog>
<p:dialog header="#{tit.updateLesson}"
widgetVar="dlgAltLesson"
resizable="false"
modal="true"
width="650">
<h:form id="formUpdateLesson" enctype="multipart/form-data">
<h:panelGrid columns="2" style="margin-bottom:10px">
<h:outputLabel for="lessonName" value="#{msgs.name}" style="font-weight:bold"/>
<h:inputText id="lessonName" value="#{lessonBean.lesson.name}" required="true" label="#{msgs.name}"/>
<h:outputLabel for="description" value="#{msgs.description}" style="font-weight:bold"/>
<p:inputTextarea id="description"
value="#{lessonBean.lesson.description}"
required="true"
label="#{msgs.description}"
style="width:550px;height:55px;"
autoResize="true"
rows="6"
cols="20"
maxlength="400"
counter="counter"
counterTemplate="{0} characters remaining"
/>
<h:outputText id="counter" />
<h:outputLabel for="image" value="#{msgs.image}" style="font-weight:bold"/>
<p:fileUpload id="image"
mode="advanced"
update="messageFile"
auto="true"
multiple="false"
label="#{msgs.image}"
fileUploadListener="#{lessonBean.handleFileUpload}"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
/>
<h:outputLabel for="codVideo" value="#{msgs.idvideo}" style="font-weight:bold"/>
<h:inputText id="codVideo" value="#{lessonBean.lesson.idVideo}" required="true" label="#{msgs.idvideo}"/>
<h:outputLabel for="cbCourse" value="#{msgs.course}" style="font-weight:bold"/>
<p:selectOneMenu id="cbCourse" value="#{lessonBean.idCourse}" required="true" label="#{msgs.course}" >
<f:selectItem itemLabel="#{msgs.selectone}" itemValue="" />
<f:selectItems value="#{courseBean.courses}" var="course" itemLabel="#{course.name}" itemValue="#{course.id}"/> se
</p:selectOneMenu>
<p:growl id="messageFile" showDetail="false"/>
</h:panelGrid>
<p:commandButton id="updateLesson" value="#{msgs.enter}"
update=":formShowLessons" action="#{lessonBean.salvar()}" ajax="false"/>
</h:form>
</p:dialog>
</div>
<div style="float:top;padding-bottom:2px;">
<h:form id="formShowLessons" enctype="multipart/form-data" prependId="true">
<div style="float:left;width:70%">
<p:accordionPanel multiple="true" activeIndex="false">
<c:forEach items="#{lessonBean.lessons}" var="lesson" >
<p:tab title="#{lesson.name}" >
<h:panelGrid columns="2" cellpadding="12" style="width:50px">
<p:graphicImage cache="true"
value="#{imageBean.streamImage}"
style="width:100px;height:100px"
>
<f:param id="image_id" name="image_id" value="#{lesson.id}"/>
<f:param id="course_id" name="course_id" value="#{lessonBean.course.id}"/>
</p:graphicImage>
<p:inputTextarea value="#{lesson.description}"
style="width:550px;height:80px;color:black"
autoResize="true"
rows="6"
cols="20"
maxlength="400"
disabled="true"
styleClass="textarea-no-border"
/>
</h:panelGrid>
</p:tab>
</c:forEach>
</p:accordionPanel>
</div>
<div style="float:left;width:80px;padding-top: 0px;padding-left: 0px;margin-top: 0px;margin-left:5px;">
<c:forEach items="#{lessonBean.lessons}" var="lesson" >
<p:commandLink update="formShowLessons" action="#{lessonBean.deleteLesson()}"
onclick="if (!confirm('#{msgs.confirmDelete}')) return false"
>
<div class="cognita-ui-icon cognita-ui-icon-delete"></div>
<f:setPropertyActionListener value="#{lesson}" target="#{lessonBean.lesson}" />
</p:commandLink>
<p:commandLink update=":formUpdateLesson"
onclick="dlgAltLesson.show()"
action="#{lessonBean.editLesson()}"
> <div class="cognita-ui-icon cognita-ui-icon-edit"></div>
<f:setPropertyActionListener value="true" target="#{lessonBean.editMode}" />
<f:setPropertyActionListener value="#{lesson.id}" target="#{lessonBean.id}" />
</p:commandLink>
</c:forEach>
</div>
</h:form>
</div>
</h:body>
</ui:define>
</ui:composition>
</html>