我想提出預訂/刪除預訂產品頁面的可能性。 預訂是好的,消除可惜不是......jsf中的調用方法
@ManagedBean(name = "wardrobeDetailsBean")
@SessionScoped
//@RequestScoped
public class WardrobeDetailsBean implements Serializable {
@Inject
WardrobeService wardrobeService;
@Inject
AuthBean authBean;
// other fields + setters, getters
@ManagedProperty("#{param.id}")
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsernameReserving() {
this.selectedWardrobe = wardrobeService.getWardrobeById(id);
String usernameById = selectedWardrobe.getReservingUserId().getUsername();
StringBuilder sb = new StringBuilder();
sb.append(usernameById.substring(0, 2));
sb.append("...");
sb.append(usernameById.substring(usernameById.length() - 2, usernameById.length()));
return sb.toString();
}
@PostConstruct
public void init() {
if (FacesContext.getCurrentInstance().getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
dbImage1 = new DefaultStreamedContent();
} else if (id != null) {
this.selectedWardrobe = wardrobeService.getWardrobeById(id);
}
}
}
public String reserve() {
this.selectedWardrobe = wardrobeService.getWardrobeById(id);
if (authBean.getUser() != null && authBean.getUser().getId() != null) {
selectedWardrobe.setReservingUserId(authBean.getUser());
wardrobeService.reserveProduct(selectedWardrobe);
return null;
} else {
return "/login.xhtml?faces-redirect=true";
}
}
public void unreserve() {
this.selectedWardrobe = wardrobeService.getWardrobeById(id);
selectedWardrobe.setReservingUserId(null);
wardrobeService.reserveProduct(selectedWardrobe);
}
}
productView.xhtml
<h:commandButton id="reserve" styleClass="btn-u btn-u-sea-shop btn-u-lg" rendered="#{wardrobeDetailsBean.selectedWardrobe.reservingUserId eq null}"
value="Reserve" action="#{wardrobeDetailsBean.reserve()}">
<f:ajax execute="@form" render="reservePanel"/>
</h:commandButton>
<h:outputText value="This product has been reserved by #{wardrobeDetailsBean.usernameReserving}" rendered="#{wardrobeDetailsBean.selectedWardrobe.reservingUserId ne null}"/>
<br />
<input type="hidden" name="remoteUser" value="#{request.remoteUser}"/>
// added using guidance from the answers
<h:commandButton id="unreserve" styleClass="btn-u btn-u-red btn-u-lg" rendered="#{request.remoteUser eq wardrobeDetailsBean.selectedWardrobe.reservingUserId.username}"
value="Unreserve" action="#{wardrobeDetailsBean.unreserve()}">
<f:ajax execute="@form" render="reservePanel"/>
</h:commandButton>
當我刪除了rendered="#{request.remoteUser eq wardrobeDetailsBean.selectedWardrobe.reservingUserId.username}"
,它的工作原理。
當預訂被點擊時,它應該只是可見的按鈕來刪除。 有什麼不對,它不起作用?日誌任何錯誤我沒有。
我點擊「保留」。該產品已被保留,該按鈕將被交換。
我點擊「取消保留」,目前仍是法不叫,我失去了關於產品的信息(刷新頁面返回有關產品的信息,但產品仍保留)
它是JSF 2還是JSF 1? –
Mojtaba。它是JSF 2. – user3128303
如果你讓它返回String而不是void方法呢? –