javax.enterprise.context.SessionScoped에서 javax.faces.view.ViewScoped로 전환했습니다. ViewScoped를 사용할 수 있도록 2.1에서 2.2로 업그레이드되었습니다. 내 CDI 주사와 함께.WELD-001303 범위 형식에 대한 활성 컨텍스트가 없습니다. javax.faces.view.ViewScoped
ViewScoped로 전환 한 후에이 오류가 발생하기 시작했으며 그 이유를 알 수 없습니다! 여기에 뭔가 잘못되었다고 생각합니까? 글래스 피시 3.1.2, 3.4.2 Primefaces
, JSF 2.2
org.jboss.weld.context.ContextNotActiveException : 스코프 타입 WELD-001,303 어떠한 액티브 컨텍스트 javax.faces.view.ViewScoped하지
단추를 누르면 페이지가 열립니다.
jsf 페이지;
<h:form enctype="multipart/form-data">
<p:fieldset legend="Create new feed" toggleable="true" collapsed="true" >
<p:fileUpload fileUploadListener="#{adminHomeController.handleFileUpload}" style="margin-top: 20px;"
mode="advanced"
update="messages"
sizeLimit="1000000"
multiple="false"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/"/>
<p:inputText label="Baslik" style="margin-top: 20px;" required="true" value="#{adminHomeController.newFieldset.legend}" />
<p:editor style="margin-top: 20px;"
value="#{adminHomeController.newFieldset.content}" />
<p:commandButton style="margin-top: 20px;" value="#{msg['common.save']}" update="messages" icon="ui-icon-disk" actionListener="#{adminHomeController.saveFieldset()}"/>
</p:fieldset>
<p:growl id="messages" showDetail="true"/>
</h:form>
컨트롤러;
import com.bg.entity.Fieldset;
import com.bg.service.Service;
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.primefaces.event.FileUploadEvent;
@Named
@ViewScoped
public class AdminHomeController implements Serializable{
@Inject
private Service service;
private Fieldset newFieldset;
public AdminHomeController() {
}
@PostConstruct
public void init() {
System.out.println("INIT");
newFieldset = new Fieldset();
}
public void handleFileUpload(FileUploadEvent event) {
System.out.println("HandleFileUpload");
byte[] file = event.getFile().getContents();
newFieldset.setData(file);
FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public void saveFieldset() {
System.out.println("SaveFieldset");
service.create(newFieldset);
FacesMessage msg = new FacesMessage("Succesful", newFieldset.getLegend() + " is saved.");
FacesContext.getCurrentInstance().addMessage(null, msg);
}
/**
* @return the newFieldset
*/
public Fieldset getNewFieldset() {
System.out.println("getNewFieldset");
return newFieldset;
}
/**
* @param newFieldset the newFieldset to set
*/
public void setNewFieldset(Fieldset newFieldset) {
System.out.println("setNewFieldset");
this.newFieldset = newFieldset;
}
}
JSF 2.2의 소스를 보지 않았으므로 범위를 어떻게 처리했는지는 알 수 없지만 수동으로 GlassFish에서 JSF를 업데이트하지 못한 것이있을 수 있습니다. GlassFish 4를 사용해 보셨습니까? – LightGuard
이것이 효과가 있으면 나는 놀랄 것이다. 내가 아는 한, JSF 2.2는 Weld와의 추가적인 통합이 필요합니다. –
@ LightGuard 맞습니다. GlassFish 4를 설치했으며 WELD-001303 예외없이 작동합니다. 제안 해 주셔서 감사합니다. 어쩌면 당신은 대답으로 받아 들일 것입니다 질문에 대답해야합니다! 건배 – Pinchy