Как загружать картинки |
Дневник |
По просьбе Dika_Dingo загружаем картинки на страничку. В нашей расширенной панели есть такой значок - вставки картинки:
Открывается диалоговое окно:
Здесь мы можем ввести в строку URL адрес картинки, которая лежит где-то в интернете и НЕ у вас на компе. Копировать адрес URL можно, нажав правой кнопкой мыши на картинку и выбрав что-то вроде "копировать адрес картинки" (в зависимости от вашего браузера Explorer, Mozilla, Opera, Chrome итд), затем вставить сюда этот адрес. Жмем ОК и вставка готова. НО! если эту картинку сотрут из того места, откуда вы взяли адрес, то и у вас она показываться не будет.
Поэтому мы закачиваем свою. Переходим на закладку "Закачатъ":
После того, как вы выберите картинку с вашего компьютера и нажмете на "Послать на сервер", картинка будет загружена. Затем вы можете "регулировать" ширину или высоту картинки в закладке "Информация о изображении". Как видно, после загрузки адрес появляется автоматически:
Нажимаем ОК и картинка автоматически появляется у нас в редакторе. Если мы хотим подвинуть картинку направо, налево или по центру, просто нажимаем на картинку и на потом - на соответствующий значок, как в WORD:
ГОТОВО! :)
Метки: загрузить картинки how to вебдизайн |
Динамичная DataTable в JSF (Richfaces) |
Дневник |
Пишу в JSF программку. Надо чтобы в dataTable столбцз выводились динамически, поскольку заранее мы не знаем, сколько будет столбцов. Нашла решение, только не понимаю, почему нельзя взять метод setValueExpression()?
package mypackage;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.el.ValueExpression;
import javax.faces.component.HtmlColumn;
import javax.faces.component.HtmlOutputText;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.context.FacesContext;
public class MyBean {
// Init------------------------------------------
private static List<List<String>> dynamicList; // Simulate fake DB.
private static String[] dynamicHeaders; // Optional.
private HtmlPanelGroup dynamicDataTableGroup; // Placeholder.
// Actions------------------------------------------
private void loadDynamicList() {
// Set headers (optional).
dynamicHeaders = new String[] {"ID", "Name", "Value"};
// Set rows. This is a stub example, just do your dynamic thing.
dynamicList = new ArrayList<List<String>>();
dynamicList.add(Arrays.asList(new String[] { "ID1", "Name1", "Value1" }));
dynamicList.add(Arrays.asList(new String[] { "ID2", "Name2", "Value2" }));
dynamicList.add(Arrays.asList(new String[] { "ID3", "Name3", "Value3" }));
dynamicList.add(Arrays.asList(new String[] { "ID4", "Name4", "Value4" }));
dynamicList.add(Arrays.asList(new String[] { "ID5", "Name5", "Value5" }));
}
private void populateDynamicDataTable() {
// Create <h:dataTable value="#{myBean.dynamicList}" var="dynamicItem">.
HtmlDataTable dynamicDataTable = new HtmlDataTable();
dynamicDataTable.setValueExpression("value",
createValueExpression("#{myBean.dynamicList}", List.class));
dynamicDataTable.setVar("dynamicItem");
// Iterate over columns.
for (int i = 0; i < dynamicList.get(0).size(); i++) {
// Create <h:column>.
HtmlColumn column = new HtmlColumn();
dynamicDataTable.getChildren().add(column);
// Create <h:outputText value="dynamicHeaders[i]"> for <f:facet name="header"> of column.
HtmlOutputText header = new HtmlOutputText();
header.setValue(dynamicHeaders[i]);
column.setHeader(header);
// Create <h:outputText value="#{dynamicItem[" + i + "]}"> for the body of column.
HtmlOutputText output = new HtmlOutputText();
output.setValueExpression("value",
createValueExpression("#{dynamicItem[" + i + "]}", String.class));
column.getChildren().add(output);
}
// Add the datatable to <h:panelGroup binding="#{myBean.dynamicDataTableGroup}">.
dynamicDataTableGroup = new HtmlPanelGroup();
dynamicDataTableGroup.getChildren().add(dynamicDataTable);
}
// Getters------------------------------------------
public HtmlPanelGroup getDynamicDataTableGroup() {
// This will be called once in the first RESTORE VIEW phase.
if (dynamicDataTableGroup == null) {
loadDynamicList(); // Preload dynamic list.
populateDynamicDataTable(); // Populate editable datatable.
}
return dynamicDataTableGroup;
}
public List<List<String>> getDynamicList() {
return dynamicList;
}
// Setters ------------------------------------------
public void setDynamicDataTableGroup(HtmlPanelGroup dynamicDataTableGroup) {
this.dynamicDataTableGroup = dynamicDataTableGroup;
}
}
Попробовала сама дефинировать (совственно переписать) функцию:
private ValueExpression createValueExpression(Object instance, Class<?> expectedType) {
return FacesContext.getCurrentInstance().getApplication().getExpressionFactory().createValueExpression(instance, expectedType);
}
В XHTML коде (или в .jsf) выглядит следующим образом - таблица вставлена в Панельную группу:
<h:panelGroup binding="#{myBean.dynamicDataTableGroup}">
<h:dataTable value="#{myBean.dynamicList}" var="dynamicItem">
<h:column>
<f:facet name="header">
<h:outputText value="dynamicHeaders[i]"/>
</f:facet>
<h:outputText value="#{dynamicItem[" + i + "]}"/>
</h:column>
</h:dataTable>
</h:panelGroup>
Блин чет все равно не работает...
Метки: programming jsf |
Страницы: | [1] |