ユーザーに関する詳細を表示するユーザープロファイルページを作成しようとしています。リクエストパラメータに依存する動画を表示する
ページのURLはprofile.xhtml?username=randomString
のようなものです。
私は、randomStringのユーザーのすべてのデータを読み込んでいます。
これは、ユーザーの画像を表示する瞬間なので、うまくいっています。
私はgraphicImageコンポーネントでPrimeFacesを使用していますが、問題は新しい要求によって画像が取得されるため、実際には要求パラメータが失われ、getAvatar()
メソッドはnullパラメータを受け取ります。
一つの解決策は、豆SessionScopedを作ることができるが、それは最初に要求したユーザからデータを取得し、randomStringが変更される場合でも、それは彼らが表示されますので、私は助けを求めています:
がどのように表示することができます要求パラメータに依存するデータベースからの動的イメージ?
感謝:)
EDIT:新コードBalusCの返信
JSFページ次
<c:set value="#{request.getParameter('user')}" var="requestedUser"/>
<c:set value="#{(requestedUser==null) ? loginBean.utente : userDataBean.findUtente(request.getParameter('user'))}" var="utente"/>
<c:set value="#{utente.equals(loginBean.utente)}" var="isMyProfile"/>
<pou:graphicImage value="#{userDataBean.avatar}">
<f:param name="username" value="#{utente.username}"/>
</pou:graphicImage>
(私は私がログインしたユーザーのプロファイルがあれば示すことにしたいので、これはvarsは使用していますページリクエスト唯一profile.xhtml
パラメータなし)
管理対象豆:
@ManagedBean
@ApplicationScoped
public class UserDataBean {
@EJB
private UserManagerLocal userManager;
/**
* Creates a new instance of UserDataBean
*/
public UserDataBean() {
}
public Utente findUtente(String username) {
return userManager.getUtente(username);
}
public StreamedContent getAvatar(){
String username = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("username");
System.out.println(username==null);
Utente u = findUtente(username);
return new DefaultStreamedContent(new ByteArrayInputStream(u.getFoto()));
}
}
どうしたのですか? ユーザー名は常にnullです!
EDIT 2:BalusC
に追加しました返信ええ、私は、パラメータとして渡されたユーザー名とユーザーのエンティティを見つける必要があるようgetAvatar()
方法がfindUser()
を呼び出すため(<f:param>
は私がオブジェクトを通過させません!) 。
したがって、entityManager.find()
とnull
プライマリキーを使用しているため、findUser()
が例外をスローします。
ところで、私は画像が含まれているパネルは#{utente ne null}
とusername
が主キーである場合にのみレンダリングされるので!#{utente}
と#{utente.username}
の両方がnullでないことを絶対的に確信しています
私は実際にHTML出力を確認することはできません!
私は画像を得ることが新しいHTTP要求
返信いただきありがとうございます! 私は既にそれを試してみましたが、成功しませんでした:(私は何か間違っていると確信しているので、コードを追加しました) – StepTNT
'#{utente}'または '#{utente.username}'は'の生成されたHTML出力は何ですか?使用しているPrimeFacesのバージョンはどれですか? –
BalusC
' イメージが正しく表示され、両方がnullでないように表示されます 実際には、getAvatar()はリクエストパラメータがnullであることを表示します 'getAvatar()'が 'findUser( ) '' PF Exception'を投げますPF3.2にあります –
StepTNT