繁体   English   中英

selectOne菜单,查找所选值并动态创建

[英]selectOne menu, look up selected value and dynamic creation

我正在尝试修改Duke's Bookstore示例,以根据州税率表计算购买税。 在下面提交的示例中,我基于在应用程序中定义书籍的文件(Book.java,BookRequestBean.java,ConfigBean.java)为基础。 我已经搜索了许多小时,但没有看到与下面类似的内容,因此认为我可能做错了。 请注意,这是家庭作业,我只是希望朝着正确的方向(或表明我完全脱离基地)做自己想做的事情。 我的问题:

  • 如何从selectOneMenu获取所选状态,并从StateTaxConfigBean中的项目中查找正确的税率?
  • 如何通过从StateTaxConfigBean中的相同项目中填充一个更好的selectOneMenu? 解决了这个
  • itemLabels正在翻译中,如果我从50个selectItems过渡到更动态地填充,是否可能具有相同的功能,如果是,我将如何处理? 不重要,但喜欢这样做

任何建议,不胜感激。 这是与我有关的:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM