how to add input value to selectmanylistbox

Hi,

I am new JSF

My requirement is like this

I have an inputText and selectManyListbox

the value entered in input field be added to selectManyListbox

How could I do this using javascript

I am trying something like this

<script language="JavaScript">

function addItem(){

with (document.forms.formtest){

var strText = form["formtest:textitem"].value;

if (strText.length > 0){

var nLength = listitems.options.length;

listitems.options[nLength] =new Option(strText, nLength, false,false);

form["formtest:textitem].value = "";

}

else

alert("Please enter an item.");

}

}

</script>

<h:form id="formtest" />

<h:panelGrid columns="2">

<h:outputText value="Enter the Sales Part number" />

<h:inputText id="textitem" value="textitem" onkeydown="addItem()" />

<h:commandButton value="ADD" style="width: 50px;"/>

<h:selectManyListbox style="width: 300px;">

<f:selectItems id="listitems" value=""/>

</h:selectManyListbox>

</h:panelGrid>

[1868 byte] By [Ruthera] at [2007-11-26 17:24:32]
# 1

You can't use client-side JS to manipulate values of server-side JSF. This makes JSF strong and secure.

Just move the logic from JS to the backing bean :)

JSF<h:form>

<h:inputText value="#{myBean.inputValue}" />

<h:selectManyListbox value="#{myBean.selectedItems}">

<f:selectItems value="#{myBean.selectItems}" />

</h:selectManyListbox>

<h:commandButton value="add item" action="#{myBean.addItem}" />

</h:form>

MyBeanprivate String inputValue;

private List selectedItems;

private List selectItems;

// + getters + setters

public void addItem() {

selectItems.add(new SelectItem(inputValue));

}

BalusCa at 2007-7-8 23:52:33 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 2

I changed the logic from JavaScript to backing bean this time getting an error of

javax.faces.FacesException: javax.servlet.ServletException: Conversion Error setting value ''{0}'' for ''{1}''.

please help me where I am going wrong

here is the code

<html>

<f:view>

<body><h:form>

<h:inputText value="#{myBean.inputValue}"/>

<h:selectManyListbox value="#{myBean.selectedItems}">

<f:selectItems value="#{myBean.selectItems}"/>

</h:selectManyListbox>

<h:commandButton value="add item" action="#{myBean.addItem}"/>

</h:form></body>

</f:view>

</html>

here is the backing bean

import java.util.List;

import javax.faces.model.SelectItem;

public class AddElement {

public AddElement() {

}

private String inputValue;

private List selectedItems;

private List selectItems;

// + getters + setters

public void addItem() {

selectItems.add(new SelectItem(inputValue));

}

public void setInputValue(String inputValue) {

this.inputValue = inputValue;

}

public String getInputValue() {

return inputValue;

}

public void setSelectedItems(List selectedItems) {

this.selectedItems = selectedItems;

}

public List getSelectedItems() {

return selectedItems;

}

public void setSelectItems(List selectItems) {

this.selectItems = selectItems;

}

public List getSelectItems() {

return selectItems;

}

}

and the faces-config.xml file

<managed-bean>

<managed-bean-name>myBean</managed-bean-name>

<managed-bean-class>com.AddElement</managed-bean-class>

<managed-bean-scope>session</managed-bean-scope>

</managed-bean>

Ruthera at 2007-7-8 23:52:33 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 3
You must at least pre-instantiate or prefill the selectItems.private List selectItems = new ArrayList();
BalusCa at 2007-7-8 23:52:33 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...