Я использую Primefaces версии 6.2 в сочетании с jsf и trinidaad. В проекте у меня есть таблица, каждая строка которой содержит кнопку для перенаправления этой страницы на другую страницу на основе выбранной строки. jsf и trindad commandLink и commandButton выполняют свою работу, а начальные символы commandLink и command button - нет.
Что я уже сделал:
type = "button"
immediate = "true"
actionListener = "#{coolingBean.view(row)}"
вместо action = "#{coolingBean.view}"
.Кто-нибудь знает, почему и что я должен изменить?
<p:column id = "viewButtonColumn" exportable = "false" style = "text-align: center" >
<tr:commandLink textAndAccessKey = "&view " id = "viewButton" action = "#{coolingBean.view}" styleClass = "commandLinkMediumSmallFont" onclick = "PF('bui').show()">
<tr:image source = "/imgs/view.png" styleClass = "commandLinkImageWithText"/>
<f:setPropertyActionListener value = "#{row.number}" target = "#{coolingBean.criteria.number}"/>
<f:setPropertyActionListener value = "#{row.id}" target = "#{searchBean.selectedId}"/>
</tr:commandLink>
</p:column>
<p:column id = "viewButtonColumn1" exportable = "false" style = "text-align: center" >
<h:commandLink textAndAccessKey = "&view " id = "viewButton1" action = "#{coolingBean.view}" styleClass = "ui-priority-primary" onclick = "PF('bui').show()">
<i class = "fa fa-search" ></i>
<f:setPropertyActionListener value = "#{row.number}" target = "#{coolingBean.criteria.number}"/>
<f:setPropertyActionListener value = "#{row.id}" target = "#{searchBean.selectedId}"/>
</h:commandLink>
</p:column>
<p:column id = "viewButtonColumn2" exportable = "false" style = "text-align: center" >
<p:commandLink value = "View" id = "commandLinkView" action = "#{coolingBean.view}" styleClass = "ui-priority-primary" onclick = "PF('bui').show()">
<i class = "fa fa-search" ></i>
<f:setPropertyActionListener value = "#{row.number}" target = "#{coolingBean.criteria.number}"/>
<f:setPropertyActionListener value = "#{row.id}" target = "#{searchBean.selectedId}"/>
</p:commandLink>
</p:column>
<p:column id = "viewButtonColumn3" exportable = "false" style = "text-align: center" >
<p:commandButton id = "viewButton2" value = "View" action = "#{coolingBean.view}" icon = "fa fa-search" immediate = "true" type = "button" onclick = "PF('bui').show()">
<f:setPropertyActionListener value = "#{row.number}" target = "#{coolingBean.criteria.number}"/>
<f:setPropertyActionListener value = "#{row.id}" target = "#{searchBean.selectedId}"/>
</p:commandButton>
</p:column>
Внутри управляемого компонента
public String view(Row selectedRow) {
if (criteria == null)
criteria = new criteriaBean();
criteria.setNummer(selectedRow.getNummber());
searchBean.selectedId = selectedRow.getId();
//FacesContext.getCurrentInstance().getExternalContext().dispatch("view.jsp");
return view();
}
public String view(){
return"view';
}
Нет, это вообще не работает. если я просто использую Тринидад, это работает, если я использую Primeface, это не работает. Я хочу удалить Тринидад со своей страницы и просто использовать простые лица, но кнопка простых лиц и командная ссылка не работают. Я просто использовал type='button', чтобы увидеть, есть ли разница.
`type = "button" неверен, см. документы PF или stackoverflow. Лучше создать настоящий минимальный воспроизводимый пример без тринидада, который не сработает. И удалите тег тринидада, поскольку теги предназначены для того, где проблема, а не для того, что вы используете (и, конечно, не для того, что работает)
Я полностью удалил Тринидад со своей страницы, но Primeface все еще не работает. Позвольте мне внести ясность. Первоначально этот проект был построен на Тринидаде. Я решил перейти на Primeface из-за смерти Тринидада. это причина, почему я должен придерживаться Тринидада в проекте и немного избавиться от него.
Эта часть уже была ясна. Я просто помогаю вам сузить проблему. h:commandButton
работает? И было больше вопросов в моем комментарии. Пожалуйста, И измените код соответствующим образом на минимальный воспроизводимый пример
Вот этот действительно помог мне.
В основном добавление одного из следующих действий помогло мне:
ajax = "false"
в commandButton?faces-redirect=true
к URL-адресу (например, return "view?faces-redirect=true';
)На самом деле это не решать исходный вопрос, а скорее обходит проблему. В этом конкретном случае ваше решение работает, но что происходит, когда вам действительно нужен ajax? Как предложил @Kukeltje, ваш первоначальный вопрос необходимо дополнить дополнительным кодом, потому что ряд вещей может привести к тому, что commandButton
не сработает.
Так это работает, если вы не используете тринидад на странице или в проекте? Или если сделать что-то подобное без
p:datatable
и называется{coolingBean.view
? Просто редирект не работает? Амд почемуtype='button'
?