2010-07-26 3 views
5

У меня есть этот рабочий код в моем веб-приложение:Создание р: CommandButton работа как час: кнопка

<h:button value="Edit user..." outcome="/public/user" > 
    <f:param name="userName" value="#{authBean.authUser}"/> 
</h:button> 

Что он делает:

  1. Это делает кнопку отправить GET
  2. Он проходит указанный параметр в URL-адресе, делая его закладок.

Что мне нужно:

  • Он должен работать как час: кнопка выше (отправить GET)
  • кнопка должна выглядеть как другие кнопки Primefaces (например, украшенные изображением ... и т.д..).

Это ближе всего я мог бы получить:

<p:commandButton value="Edit user..." action="/public/user?faces-redirect=true" ajax="false" immediate="true" > 
    <f:param name="userName" value="#{authBean.authUser}"/> 
</p:commandButton> 

Он посылает POST, который перенаправляется на новый URL с GET. Однако параметр теряется в процессе.

Другая идея:

<p:linkButton value="Edit user..." href="http://localhost:8080/contextpath/faces/public/user.xhtml"> 
    <f:param name="userName" value="#{authBean.authUser}"/> 
</p:linkButton> 

запрос GET прерывается (??? согласно Firebug) и текущая страница размещена снова.

Каков правильный способ сделать это?

UPDATE: это работает (на пустой странице, без р: DataTable):

<p:linkButton value="Edit user..." href="http://localhost:8080/contextpath/faces/public/user.xhtml?userName=myusername"> 

, но это не делает:

<p:linkButton value="Edit user..." href="http://localhost:8080/contextpath/faces/public/user.xhtml?userName=myusername&secondParam=otherValue"> 

Последние результаты:

500: javax.servlet.ServletException: Ошибка синтаксического анализа /sample0.xhtml: Ошибка Прослеживается [строка: 14] Рефери nce до объект "secondParam" должен заканчиваться ';' разделитель.


UPDATE2: & должны быть экранированы:

<p:linkButton value="Edit user..." href="http://localhost:8080/contextpath/faces/public/user.xhtml?userName=myusername&amp;secondParam=otherValue"> 

и это хорошо выглядит ... но я все еще получаю ПОЛУЧИТЬ прервана и POST негодуют:

alt text http://img64.imageshack.us/img64/1017/primefaceslinkbutton.jpg

Это - полная пустая страница, которую я пытался это с:

<?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> 

Основная версия 2.1.

ответ

1

Использование p:linkButton.


Update: согласно вашему обновлению с примером кода URL должен быть указан в href атрибуте, а не в url attribtue. Также см. Документацию к компоненту, которую я связал здесь выше.

Симптомы, по крайней мере, звучат так, как будто вы запускаете асинхронный (Ajax) запрос GET, а не синхронный. Тогда FireBug действительно выдавал такую ​​ошибку, когда запрос запускается в другом домене.

У вас нет других Javascripts, которые мешают/сталкиваются с поведением linkButton по умолчанию? Кнопка перемещается простым onclick="window.location=newurl;".


Update 2: это работает, если вы проверяете его автономно в простой странице? Например.

<!DOCTYPE html> 
<html xmlns="http://www.w3c.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:p="http://primefaces.prime.com.tr/ui"> 
    <h:head> 
     <title>Test</title> 
    </h:head> 
    <h:body> 
     <p:linkButton value="test" href="http://stackoverflow.com" /> 
    </h:body> 
</html> 
+0

Я попытался р: LinkButton, но он не работает. Firebug говорит, что запрос GET прерывается, и текущая страница снова добавляется. – egbokul

+0

Извините, я не сделал полную копию/вставку. Я использую атрибут «href», «url» даже не принят Netbeans. Теперь я проверю наличие другого javascript ... – egbokul

+0

На пустой странице p: linkButton работает ... вроде. f: параметр не работает. Если я укажу параметр в URL-адресе напрямую (например: «.../user.xhtml? UserName = myusername»), он работает. Когда я укажу еще один параметр, Glassfish говорит 500: javax.servlet.ServletException: Анализ ошибок /sample0.xhtml: Ошибка трассировки [строка: 14] Ссылка на объект «relVerMin» должна заканчиваться символом ';' разделитель. (relVerMin был моим вторым параметром, например: «.../delrel.xhtml? relVerMaj = 1 & relVerMin = 0») – egbokul

3

В PrimeFaces 2.2., Мы будем обесценивать linkButton и ввести кнопку p:. Выдача билета;

http://code.google.com/p/primefaces/issues/detail?id=1037

+0

Ах, хорошо. Можете ли вы подробно объяснить конкретную проблему? – BalusC

+0

ОК, поэтому я буду придерживаться кнопки h: без изображений. Спасибо BalusC за ваше время и усилия, и, конечно, Кагатай за ответ ;-) – egbokul

+0

Вот новая кнопка p:; http://www.primefaces.org:8080/prime-showcase-labs/ui/button.jsf –

Смежные вопросы