[英]selectOne menu, look up selected value and dynamic creation
我正在尝试修改Duke's Bookstore示例,以根据州税率表计算购买税。 在下面提交的示例中,我基于在应用程序中定义书籍的文件(Book.java,BookRequestBean.java,ConfigBean.java)为基础。 我已经搜索了许多小时,但没有看到与下面类似的内容,因此认为我可能做错了。 请注意,这是家庭作业,我只是希望朝着正确的方向(或表明我完全脱离基地)做自己想做的事情。 我的问题:
任何建议,不胜感激。 这是与我有关的:
selectOne菜单(已编辑并已解决)
<h:outputLabel for="state" value="#{bundle.State}"/>
<h:selectOneMenu id="state"
value="#{cashierBean.selectedItem}"
required="true"
requiredMessage="#{bundle.ReqState}">
<f:selectItem itemValue="#{null}" itemLabel="#{bundle.stateSelect}"/>
<f:selectItems value="#{cashierBean.states}"
var="state"
itemLabel="#{state.statename}"
itemValue="#{state.stateId}"/>
</h:selectOneMenu>
<h:message styleClass="error-message" for="state"/>
CashierBean.java添加了此内容
public List<State> getStates() {
try {
return stateTaxRequestBean.getStates();
} catch (StatesNotFoundException e) {
throw new FacesException("Exception: " + e);
}
}
State.java
@Entity
@Table(name = "WEB_BOOKSTORE_STATES")
@NamedQuery(
name = "findStates",
query = "SELECT s FROM State s ORDER BY s.stateId")
public class State implements Serializable {
private static final long serialVersionUID = -4146681491856848089L;
@Id
@NotNull
private String stateId;
@NotNull
private String statename;
@NotNull
private Double tax;
public State() {
}
public State(String stateId, String statename, Double tax) {
this.stateId = stateId;
this.statename = statename;
this.tax = tax;
}
// Getters and Setters
...
@Override
public String toString() {
return "bookstore.entities.State[ stateId=" + stateId + " ]";
}
@Override
public int hashCode() {
int hash = 0;
hash += (stateId != null ? stateId.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
if (!(object instanceof State)) {
return false;
}
State other = (State) object;
return this.stateId != null || other.stateId == null
&& this.stateId == null || this.stateId.equals(other.stateId);
}
}
StateTaxRequestBean.java
@Stateful
public class StateTaxRequestBean {
@PersistenceContext
private EntityManager em;
private static final Logger logger =
Logger.getLogger("dukesbookstore.ejb.StateTaxRequestBean");
public StateTaxRequestBean() throws Exception {
}
public void createState(String stateId, String statename, Double tax) {
try {
State state = new State(stateId, statename, tax);
logger.log(Level.INFO, "Created state {0}", stateId);
em.persist(state);
logger.log(Level.INFO, "Persisted state {0}", stateId);
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}
}
public List<State> getStates() throws StatesNotFoundException {
try {
return (List<State>) em.createNamedQuery("findStates").getResultList();
} catch (Exception ex) {
throw new StatesNotFoundException(
"Could not get states: " + ex.getMessage());
}
}
public State getState(String stateId) throws StateNotFoundException {
State requestedState = em.find(State.class, stateId);
if (requestedState == null) {
throw new StateNotFoundException("Couldn't find state: " + stateId);
}
return requestedState;
}
}
StateTaxConfigBean.java
@Singleton
@Startup
public class StateTaxConfigBean {
@EJB
private StateTaxRequestBean request;
@PostConstruct
public void createData() {
request.createState("AL", "Alabama", 0.04);
request.createState("AK", "Alaska", 0.0);
request.createState("AZ", "Arizona", 0.056);
etc...
}
}
您可以为此使用ajax。 select事件将是侦听器的触发器。
您可以为此使用ajax。 select事件将是侦听器的触发器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.