저는 primeface를 처음 사용하고 jsf를 사용하여 간단한 웹 응용 프로그램을 구현하려고합니다. 이 응용 프로그램에서는 login.xhtml을 사용하여 사용자가 이름과 암호를 입력 할 수 있습니다. 로그인이 성공하면 LoginBean 클래스가 그를 basicSites 폴더의 index.xhtml이라는 다른 페이지로 리디렉션합니다. login.xhtml에서 모든 것이 정상적으로 작동하지만 index.xhtml에서 오류가 발생했습니다. 이 사이트로 리디렉션 한 후에는 jQuery가 정의되어 있지 않으므로 화이트 사이트 만 표시되고 브라우저 콘솔에 참조 오류가 있음이 표시됩니다. 비슷한 문제가있는 다른 많은 기사를 조사했지만 내 문제는 아직 해결되지 않았습니다.jquery (primefaces)는 리디렉션 후에 포함되지 않습니다.
다음은 이해를 돕기위한 코드입니다.
login.xhtml
<h:head>
<title>Zugangsverwaltung | Login</title>
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/default.css" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/syntax.css" />
<script type="text/javascript" href="#{request.contextPath}/scripts.js"/>
</h:head>
<h:body>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery('#logoutLink').fadeOut();
});
function handleLoginRequest(xhr, status, args) {
if(args.validationFailed || !args.loggedIn) {
jQuery('#dialog').effect("shake", { times:3 }, 100);
} else {
dlg.hide();
jQuery('#loginLink').fadeOut(0);
jQuery('#logoutLink').fadeIn();
}
} </script>
LoginBean.java
public void login(ActionEvent actionEvent) {
RequestContext context = RequestContext.getCurrentInstance();
FacesMessage msg = null;
boolean loggedIn = false;
FacesContext ctx = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) ctx.getExternalContext().getRequest();
try {
request.login(username, password);
loggedIn = true;
msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Willkommen", username);
FacesContext.getCurrentInstance().addMessage("global", msg);
} catch (ServletException e) {
loggedIn = false;
msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Login fehlgeschlagen!", "Invalid credentials");
FacesContext.getCurrentInstance().addMessage("local", msg);
}
try {
if (loggedIn) {
ExternalContext ectx = ctx.getExternalContext();
ectx.redirect(request.getContextPath() + "/basicSites/index.xhtml");
}
} catch (Exception e) {
System.out.println("LoginBean - login: " + e.getMessage());
}
그리고 오류가 발생 적어도 index.xhtml,
:<h:head>
<title>Zugriffsverwaltung | Backend</title>
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/default.css" />
<link type="text/css" rel="stylesheet" href="#{request.contextPath}/syntax.css" />
<script type="text/javascript" href="#{request.contextPath}/scripts.js" />
</h:head>
<h:body>
<script type="text/javascript">
jQuery(document).ready(function() { <!-- Here: JQuery is not definded -->
jQuery('#logoutLink').fadeOut();
});</script>
<p:layout fullPage="true" >
<p:layoutUnit id="center" position="center"> <!-- ... -->
내가 누구 아이디어가 희망 지금해야 할 일;) 문제 해결에 도움이되는 모든 힌트를 주셔서 감사합니다. 사전에
감사합니다 : D
답해 주셔서 고맙습니다 : DI는 이미 xmlns : p ...를 가지고 있습니다.하지만 게시하는 것을 잊어 버린 것처럼 보입니다 ... 죄송합니다 ^^ 매뉴얼에 h : outputScript도 포함되어 있습니다. 많은 다른 기사, 그리고 그것을 물론 시도했지만 여전히 나를 위해 일하지 않을거야 : (( – jennymo
@ BlaBlub js 파일에 코드를 삽입하고 그것을 포함 ... (js 코드를 별도의 .js 파일로 이동) – Daniel
아, 좋은 생각 : D이 일을 한 후에는 브라우저 콘솔에 오류가 표시되지 않습니다. 그러나 나는 아직도 아무것도 보지 못했습니다 ...-- 리다이렉트에 의해 완전한 프라임 표면 자원이 손실 될 가능성이 있습니까? 왜냐하면 전체 ... 블록을 index.xhtml에서 간단한 htmltextline으로 바꿀 때 (예 : Hello World) 나는 xmlns : p = "http : // primefaces를 리디렉션 한 후 볼 수있었습니다. org/ui "는 내 파일에 포함되어 있습니다 ... –
jennymo