2011-01-28 3 views
1

Возможно ли получить поведение h:commandLink без использования javascript? Я использую JSF2JSF2: commandLink без javascript

Если я хочу использовать компонент лайтбоксов, мне нужно будет иметь полный сгенерированный URL-адрес заранее. Если мои URL-адреса основаны на действии, я могу использовать только h:commandLink, который генерирует javascript, привязанный к действию мыши.

Я хотел бы иметь функции навигации JSF (например, использовать action="#{bean.action}" для создания ссылок) и иметь способ получить полный сгенерированный URL-адрес.

ответ

4

Используйте <h:outputLink> или <h:link> вместо этого. Это генерирует простой элемент HTML <a> без необходимости в <h:form>. Чтобы вызывать действия, вам необходимо переместить логику из метода действия компонента в конструктор или @PostConstruct управляемого компонента, который связан с открытым представлением.

Если вам необходимо передать параметры, используйте <f:param>, чтобы добавить их в виде строки запроса. Вы можете использовать <managed-property> в faces-config.xml (или @ManagedProperty, когда вы уже находитесь на JSF 2.0), чтобы установить эти параметры в компоненте. Вы можете получить к ним доступ в методе @PostConstruct.

+0

Но с 'outputLink' я не могу использовать атрибут' action', правильно? Таким образом, я бы не использовал навигацию JSF. –

+0

Вы читали за пределами первого предложения моего ответа? Во всяком случае, вы также можете использовать '', который может принимать и преобразовывать значение результата для события навигации непосредственно. – BalusC

+0

Да, я читал. В моем комментарии я имею в виду, что я не буду использовать результат. Кроме того, я не могу использовать @Postconstruct (к сожалению), потому что управляемые компоненты используются в разных контекстах. Но спасибо за подсказку +1 –

0

В вашем действии вы можете использовать

try { 
    FacesUtils.redirect("yourUrl.jsf"); 
} 
catch (IOException e) { 
    Log.get().error(e); 
} 

Для перенаправления запросов.

Конечно, вы можете создать свой адрес, как вы хотите

Надеются, что это помогает

+1

Он хочет иметь полный URL-адрес уже внутри ссылки. – BalusC

+0

@BalusC в этом случае вы правы и - это решение –

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