2016-06-08 1 views
1

Я хочу периодически печатать Array of Strings на моей странице JSF, но я не могу этого добиться. JSF только распечатывает весь массив одновременно, а не периодически.Как периодически печатать массив строк в JSF

Это мой XHTML код:

<h:form> 
<h:outputText id="eventener" value="#{eventBean.names}" /> 
    <p:poll interval="2" listener="#{eventBean.names}" update="eventener" /> 
    </h:form> 

Это мой боб:

@ManagedBean 
@ViewScoped 
public class EventBean implements Serializable { 

    private List<String> names; 

    @PostConstruct 
    public void namesInterval() { 

     names = Arrays.asList("Steve is late for work", "Segun is coming back next week", "Tope is a beautiful girl"); 
    } 

    public List<String> getNames() { 
     return names; 

    } 

} 

ответ

0

Я не понимаю, что вы пытаетесь сделать. Вы хотите распечатать каждый элемент в массиве сразу? Когда вы обновляете (добавляете элементы) свой массив?

Вы не обновляете свой массив в любой момент, опрос работает по назначению. На вашем атрибуте вы устанавливаете то, что хотите каждые 2 секунды, например, обновляете свой массив из внешнего источника. Если вы пытаетесь напечатать элемент из массива каждые 2 секунды, вы можете попробовать что-то вроде этого

<h:form> 
<h:outputText id="eventener" value="#{eventBean.item}" /> 
    <p:poll interval="2" listener="#{eventBean.pollListener}" update="eventener" /> 
</h:form> 

Bean

@ManagedBean 
@ViewScoped 
public class EventBean implements Serializable { 

    private List<String> names; 
    private String item; 
    private int count; 

    @PostConstruct 
    public void namesInterval() { 
     names = Arrays.asList("Steve is late for work", "Segun is coming back next week", "Tope is a beautiful girl"); 
     count = 0; 
    } 

    public List<String> getNames() { 
     return names; 
    } 

    public String getItem(){ 
     return item; 
    } 

    public void pollListener(){ 
     //you can use an iterator too 
     if (count >= names.size()) 
     { 
      count = 0; 
     } 
     item = names.get(count); 
     count++; 
    } 
} 
+0

Спасибо большое. Я пробовал использовать это, но он только печатает первый индекс массива («Стив опаздывает на работу») каждые 2 секунды, я буду рад, если вы поможете мне изменить его, потому что я пробовал другую модификацию, но его все еще распечатывая первый индекс снова и снова –

+0

Я забыл добавить 'count ++', повторите попытку. – mcastilloy2k

+0

Он по-прежнему дает тот же результат. –

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