2010-05-25 2 views
0

по некоторым причинам я пытаюсь перевести следующий RoR код вида на вид GSP:Перевод зрения RoR на Java

List<Object> objects содержит данные, которые я хочу, чтобы отобразить в 3 колонки

<% 
modulo_objects = @objects.length % 3 
base = @objects.length/3 
base = base.ceil 
case modulo_objects 
    when 0 
cols = [base, base, base] 
    when 1 
cols = [base, base + 1, base] 
    when 2 
cols = [base + 1, base, base + 1] 
end 

counter = 0 
%> 

<% 3.times do |i| %> 
<td width="220" align="center" style="padding-right: 15px;"> 
     <% cols[i].times do %> 
    <h1><a href="/objects/show/<%= @objects[counter].urlname %>" ><%= @objects[counter].name %></a></h1> 
    <% counter = counter + 1 %> 
    <% end %> 
</td> 
<% end %> 

Это то, что я до сих пор:

#{extends 'main.html' /} 
%{ 
modulo_objects = objects.size() % 3 
base = objects.size()/3 
base = Math.ceil(base) 
if(modulo_objects == 0) 
    cols = [base, base, base] 
else if(modulo_objects == 1) 
    cols = [base, base + 1, base] 
else if(modulo_objects == 2) 
    cols = [base + 1, base, base + 1] 
endif 

counter = 0 

}% 

#{list items:1..3, as:'i'} 
    <td width="220" align="center" style="padding-right: 15px;"> 
     #{list items:cols[i]} 
      <a href="@{Objects.show(objects.get(counter).name.replaceAll(" ", "-"))}" >${objects.get(counter).name}</a> 
      %{ counter = counter + 1 }% 
     #{/list} 
    </td> 
#{/list} 

идея заключается в том, чтобы сохранить элементы организованы в 3 колонки как 1 | 0 | 1 4 | 5 | 4 или 5 | 4 | 5, например, Я не» действительно под если #{list items:cols[i]} воспроизведет рубин cols[i].times do.

Пока что представление Java не отображает более двух элементов.

+0

Ты мой герой. – Daniel

+0

Привет, mnml. Вы должны сказать, в чем проблема. Ты только что сказал, что делаешь. Что-то не работает? –

+2

не было бы механическим турком амазонки, чем больше места для этой задачи? –

ответ

0
public static List<Object>[] splitIn(List<Object> objects, int i) { 

    int base_objects = objects.size()/i; 
    int modulo_objects = objects.size() % i; 
    int[] colSize = new int[i]; 

    switch (modulo_objects) { 
     case 0: 
      colSize[0] = base_objects; 
      colSize[1] = base_objects; 
      colSize[2] = base_objects; 
      break; 
     case 1: 
      colSize[0] = base_objects; 
      colSize[1] = base_objects + 1; 
      colSize[2] = base_objects; 
      break; 
     case 2: 
      colSize[0] = base_objects + 1; 
      colSize[1] = base_objects; 
      colSize[2] = base_objects + 1; 
      break; 
    } 

    List<Object>[] columns = new List[i]; 

    int count = 0; 
    for (int x = 0; x < i; x++) { 
     List<Object> col_objects = new ArrayList(); 
     int colCount = 0; 
     while (colCount < colSize[x]) { 
      Object Object = (Object) objects.get(count); 
      col_objects.add(Object); 
      colCount++; 
      count++; 
     } 
     columns[x] = col_objects; 
    } 
    return columns; 
} 






#{list cols, as:'column'} 
    <td width="220" align="center" style="padding-right: 15px;"> 
     #{list column, as:'object'} 
       <h1><a href="@{Objects.show(object.urlName())}" >${object.name}</a></h1> 
     #{/list} 
    </td> 
    #{/list} 
0

просто комментарий (извините, не имеет права):

я действительно думаю, что код выше вашего HTML должен идти к контроллеру, так что стиль кодирования делает ваш MVC Framework пустоты: P просто говорит

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