tôi có mã làm việc này trong webapp của tôi:Làm p: CommandButton công việc như h: nút
<h:button value="Edit user..." outcome="/public/user" >
<f:param name="userName" value="#{authBean.authUser}"/>
</h:button>
Những gì nó:
- Nó làm cho nút gửi một GET
- Nó đi thông số được chỉ định trong URL, làm cho nó có thể đánh dấu trang.
Những gì tôi cần:
- Nó sẽ làm việc như h: nút ở trên (gửi GET)
- nút nên trông giống như nút Primefaces khác (ví dụ như trang trí với một hình ảnh ... vv.).
này là gần nhất tôi có thể nhận được:
<p:commandButton value="Edit user..." action="/public/user?faces-redirect=true" ajax="false" immediate="true" >
<f:param name="userName" value="#{authBean.authUser}"/>
</p:commandButton>
Nó sẽ gửi một POST đó được chuyển hướng đến URL mới với một GET. Tuy nhiên, tham số bị mất trong quá trình này.
Một ý tưởng:
<p:linkButton value="Edit user..." href="http://localhost:8080/contextpath/faces/public/user.xhtml">
<f:param name="userName" value="#{authBean.authUser}"/>
</p:linkButton>
Yêu cầu GET được hủy bỏ (??? theo Firebug) và trang hiện tại được đăng tải lại.
Cách thích hợp để thực hiện việc này là gì?
UPDATE: công trình này (trên một trang trắng tinh, không có p: DataTable):
<p:linkButton value="Edit user..." href="http://localhost:8080/contextpath/faces/public/user.xhtml?userName=myusername">
nhưng điều này không:
<p:linkButton value="Edit user..." href="http://localhost:8080/contextpath/faces/public/user.xhtml?userName=myusername&secondParam=otherValue">
kết quả sau in:
500: javax.servlet.ServletException: Lỗi phân tích cú pháp /sample0.xhtml: Lỗi Đã theo dõi [dòng: 14] Yêu cầu nce đến pháp nhân "secondParam" phải kết thúc bằng ';' dấu phân tách.
UPDATE2: các & nên được thoát:
<p:linkButton value="Edit user..." href="http://localhost:8080/contextpath/faces/public/user.xhtml?userName=myusername&secondParam=otherValue">
và nó có vẻ tốt ... nhưng tôi vẫn nhận được GET và POST hủy bỏ resent:
alt text http://img64.imageshack.us/img64/1017/primefaceslinkbutton.jpg
Đây là trang trống đầy đủ mà tôi đã cố gắng nó với:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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:p="http://primefaces.prime.com.tr/ui">
<h:head />
<h:body>
<h:form>
<p:linkButton value="Click me" href="http://stackoverflow.com" />
</h:form>
</h:body>
</html>
Bản phát hành 2.1 của Primefaces.
Tôi đã thử p: linkButton nhưng không hoạt động. Firebug cho biết yêu cầu GET bị hủy bỏ và trang hiện tại được đăng lại. – egbokul
Rất tiếc, tôi không sao chép/dán hoàn toàn. Tôi đang sử dụng thuộc tính "href", "url" thậm chí không được Netbeans chấp nhận. Bây giờ tôi sẽ kiểm tra javascript khác ... – egbokul
Trên một trang trống p: linkButton hoạt động ... loại. f: param không hoạt động. Nếu tôi chỉ định tham số trong URL trực tiếp (ví dụ: ".../user.xhtml? UserName = myusername") thì nó hoạt động. Khi tôi chỉ định một tham số nữa, Glassfish nói 500: javax.servlet.ServletException: Lỗi Phân tích cú pháp /sample0.xhtml: Lỗi Truy tìm [dòng: 14] Tham chiếu đến thực thể "relVerMin" phải kết thúc bằng ';' dấu phân tách. (relVerMin là tham số thứ hai của tôi, chẳng hạn như: ".../delrel.xhtml? relVerMaj = 1 & relVerMin = 0") – egbokul