Вы пытались решить проблему с клейкой лентой?
Попробуйте определить, когда возникают ошибки, и исправьте их короткими операторами if, это не очень, но для некоторых проблем это единственное решение, и это один из них .
if( (n * 0.1) < 100.0 ) { return n * 0.1 - 0.000000000000001 ;}
else { return n * 0.1 + 0.000000000000001 ;}
У меня была такая же проблема в проекте научной симуляции в c #, и я могу сказать вам, что если вы проигнорируете эффект бабочки, он превратится в большого толстого дракона и укусит вас в a **
Вам нужно будет перебирать его. JSF 2 предлагает три итерационных компонента из коробки. Если объект User
выглядит ниже,
@Entity
public class User {
private @Id Long id;
private String username;
private String email;
private LocalDate birthdate;
// Add/generate getters+setters.
}
и что результаты поиска назначаются как свойство List<User> users
компонента, доступного как #{bean}
,
@Named @RequestScoped
public class Bean {
private List<User> users;
// Add/generate postconstruct+getter.
}
вот несколько примеров, основанных на нем:
<h:dataTable>
, компонент пользовательского интерфейса, который генерирует HTML <table>
. <h:dataTable value="#{bean.users}" var="user">
<h:column>#{user.id}</h:column>
<h:column>#{user.username}</h:column>
<h:column><a href="mailto:#{user.email}">#{user.email}</a></h:column>
<h:column>#{user.birthdate}</h:column>
</h:dataTable>
<ui:repeat>
, компонент пользовательского интерфейса, который не генерирует HTML-разметки (так что вам нужно будет написать весь этот HTML по желанию самостоятельно, что может легко следует изменить, например, на <ul><li>
или <dl><dt><dd>
или <div><span>
и т. д.): <table>
<ui:repeat value="#{bean.users}" var="user">
<tr>
<td>#{user.id}</td>
<td>#{user.username}</td>
<td><a href="mailto:#{user.email}">#{user.email}</a></td>
<td>#{user.birthdate}</td>
</td>
</ui:repeat>
</table>
<c:forEach>
, обработчик тега, который запускается во время сборки вида (пояснение здесь: JSTL в JSF2 Facelets ... имеет смысл? ), он также не производит разметки HTML: <table>
<c:forEach items="#{bean.users}" var="user">
<tr>
<td>#{user.id}</td>
<td>#{user.username}</td>
<td><a href="mailto:#{user.email}">#{user.email}</a></td>
<td>#{user.birthdate}</td>
</td>
</c:forEach>
</table>
Вы можете сохранить свой Список в переменной класса, дать ему геттер и (возможно) сеттер. Объявите метод searchByString
как void
и вызовите его, предположим, что a (если вы используете PrimeFaces):
<p:commandLink update="@form" process="@this" action="#{myBean.searchByString}">
myBean:
public void searchByString(String string) {
userList = getEntityManager().createNamedQuery("Userdetails.findByUsername").setParameter("username", "%" + string + "%").getResultList();
}
при условии, что ваша таблица сидит в форме, которую вы только что обновили, вы можете отобразить в ней List
.
<p:dataTable var="user" value="#{myBean.userList}">
<p:column headerText="Name">
<h:outputText value="#{user.name}" />
</p:column>
</p:dataTable>