2015-11-29 2 views
0

Я пытаюсь изменить пример Duke's Bookstore, чтобы рассчитать налоги на покупки на основе таблицы ставок государственного налога. С приведенными ниже примерами я основывал их на файлах, которые определяют книги в приложении (Book.java, BookRequestBean.java, ConfigBean.java). Я искал много часов, но я не вижу ничего похожего на то, что ниже, и поэтому думаю, что я, вероятно, ошибаюсь. Обратите внимание, что это домашнее задание, и я просто надеюсь на толкание в правильном направлении (или указание на то, что я полностью вне базы), чтобы делать то, что я пытаюсь выполнить. Мои вопросы:selectOne menu, посмотреть выбранное значение и динамическое создание

  • Как мне выбрать выбранное состояние из selectOneMenu и посмотреть правильную ставку налога с позиций в StateTaxConfigBean?
  • Как создать более удобный selectOneMenu, заполнив его из тех же элементов из StateTaxConfigBean? SOLVED THIS
  • Переведено на предметLabels, возможно ли иметь такую ​​же функциональность, если я перейду из 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... 
    } 
} 

ответ

0

Вы можете использовать Ajax для этого. Событие select будет триггером для слушателя.

0

Вы можете использовать Ajax для этого. Событие select будет триггером для слушателя.

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